2016-07-21 10 views
6

私はsocket.emitクライアントからサーバーへの応答を呼び出しました。以下のコードでは起こっていないファイル名をクライアントに渡したいと思います。何が間違って実装されているのかわかりません。どうすればsocket.emitを使ってサーバーからの応答を得ることができますか?socket.ioを使用してクライアントに応答を返す方法は?

client.js

socket.emit('startRecording',function (response) { 
      console.log('start recording emit response',response); 
     }); 

server..js

socket.on('startRecording',function() { 
     var response; 
     logsRecording(function (filename) { 
      response = filename; 
      return response; 
      //socket.emit('filename',filename); 
     }); 
+0

'glitr -router'と 'glitr-router-client'は、expressjsのようにサーバーと接続されたクライアントの両方からの応答機能を可能にします。 – X0r0N

答えて

7

をメッセージを確認するには、startRecordingイベントのハンドラは、パラメータとして承認コールバックを受け入れる必要があります。それからあなたは、あなたの望むデータでそれを呼び出すことができます。見出しで始まるGet Started: Chat applicationを介して実行すると便利かもしれません

socket.emit('startRecording'); 
socket.on('filename', function(filename) { 
    console.log('Filename received: ' + filename); 
}); 

:またSending and getting data (acknowledgements)

socket.on('startRecording',function (socket, ackFn) { 
    var response; 
    logsRecording(function (filename) { 
     ackFn(filename); 
    }); 
}); 

を参照してください、あなたはclient.jsで、コメントアウトされていることfilenameイベントのリスナーを追加することができます「Socket.IOの統合」では、Webソケットのより一般的な理解を得ることができます。あなたは、クライアントからのデータを渡したい場合は

socket.on('startRecording',function (callbackFn) { 
    var response; 
    logsRecording(function (filename) { 
     callbackFn(filename); 
    }); 

+0

ありがとうございました! – hussain

1

お使いのサーバーのコードは次のようになります

socket.emit('startRecording', {someData: 'value'}, function (response) { 

を、サーバは次のようになります。

socket.on('startRecording',function (dataFromClient, callbackFn) { 
関連する問題