2017-11-13 11 views
0

socket.on 호출을 기다리는 방법을 알고 싶습니다. 그 중 하나는 here으로 설명 된 콜백을 사용할 수 있지만 내 경우에는 적용 할 수 없다는 것을 알고 있습니다. (적어도 나는 그렇지 않다고 생각합니다.) 다음은 내가 무엇을 가지고 : 서버에nodejs에서 socket.on을 대기하는 방법

index.html

... 
socket.on('update_img', function(data) { 
    // Do something 
}); 

scanner.addListener('scan', function(content) { 
    socket.emit('answer', content); 
}); 

다음 :

기본적으로 무슨 일
... 
client.emit('update_img', some_data); 
... 
client.on('answer', function(data) { 
    // do something with the answer 
}); 

, 나는 다음 이미지를 생성하는 프론트 엔드에 뭔가를 보낼 수 있습니다. 동시에 브라우저의 라이브러리 (instascan, 즉 scanner.addListener)는 QR 코드 읽기를 기다리고 해당 내용을 서버로 다시 보냅니다. 그래서 지금 내가 필요로하는 것은 client.on('answer', ...);이 대답을 기다리는 것입니다.

이것을 달성 할 방법이 있습니까?

+0

아직 시도해 보셨습니까? 코드가 작동해야합니다. – ThatBrianDude

+0

당연히 그렇습니다. ;-) –

+0

당신은 console.log() 문을 각 콜백에 넣을 수 있습니다. – ThatBrianDude

답변

0

기본적으로 client.on (...)에서는 해당 이벤트에 대한 콜백을 추가합니다. 즉, 클라이언트에서 해당 "anwser"이벤트가 방출 될 때마다 서버에서 호출됩니다.

그래서 클라이언트의 socket.emit ("anwser")가 서버에서 이미지를 보낸 후에 만 ​​호출되는 경우 서버는 "anwser"이벤트를 수신하면됩니다. 예상대로 모든 일이 일어났습니다.

따라서 실제로는 명시 적으로 "대기"해야합니다.

편집 : 귀하의 흐름을 잘못 이해했습니다. 내 대답 업데이트 예정

+0

요청을 올바르게 완료하려면 콘텐츠를 기다려야합니다. –

+0

콘텐츠는 "update_img"이벤트 권한을 통해 제공됩니까? – ThatBrianDude

+0

update_image는 단순히 화면의 이미지를 업데이트합니다. 스캐너는 콘텐츠를 처리해야하는 qr 코드를 스캔하여 요청 대답으로 다시 전송합니다. –