2016-07-21 151 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事件處理程序需要接受確認回調作爲參數。然後你可以用你想要的數據來調用它。見Sending and getting data (acknowledgements)

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

或者,你可以添加一個監聽你有評論指出,filename事件,在client.js:

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

這可能有助於通過Get Started: Chat application運行在標題開始「集成Socket.IO」以更全面地瞭解Websockets。

+0

感謝它的工作! – hussain

1

服務器代碼應該是這樣的:

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

如果你想在數據傳遞從客戶端:

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

然後服務器會:

socket.on('startRecording',function (dataFromClient, callbackFn) { 
相關問題