Socket.io socket.emit ack永远不会运行

joz*_*sin 4 javascript

从文档中,如果发出事件并传递函数,则应看到回调运行。当我调试时,此匿名函数永远不会运行。

socket.emit('ferret', 'tobi', function (data) {
  console.log(data); // never called
});
Run Code Online (Sandbox Code Playgroud)

然而

socket.on('ferret', function(data){
      console.log(data); // data 
})
socket.emit('ferret');
Run Code Online (Sandbox Code Playgroud)

因此,事件侦听器可以正常工作,但是发射回调不可以。

Sas*_*ang 6

发出消息时,回调不会自动被调用,它必须由服务器调用,因此在服务端,您需要执行以下操作:

socket.on('ferret', function(data, callback) {
   //Process data
   callback(newData)
}
Run Code Online (Sandbox Code Playgroud)