2016-07-21 113 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) { 
相关问题