2017-11-13 21 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"イベントをリッスンする必要があり、期待どおりにすべてが起こった。

したがって、実際に明示的に「待機」する必要はありません。

EDIT:あなたの流れを誤解しました。私の答えが更新されます

+0

要求を正しく完了するためにはコンテンツを待つ必要があります。 –

+0

コンテンツは「update_img」イベントを通じて提供されますか? – ThatBrianDude

+0

update_imageは画面上の画像を更新するだけです。スキャナはコンテンツを処理する必要があるqrコードをスキャンし、要求の回答として返信します –

関連する問題