Socket.io发射callback不在服务器端激发?

我的服务器正确地发出事件,但发射callback从不起作用。 在下面,我的控制台上没有任何logging:

服务器:

io.sockets.emit('delete hint', {id: id}, function(data){ console.log('callback'); }); 

客户:

 socket.on('delete hint', function(data){ // display a message before deleting $('#' + data.id).fadeOut(function(){ $(this).remove(); }); }); 

如果callback函数需要包含在接收函数中,我也尝试了客户端代码作为函数(data,fn)。

我正在使用Windows,并且在socket.io发出事件时,我的命令提示符显示以下内容:

 websocket writing 5:::{"name":"delete hint", "args":[{"id":"1"}, null]} 

我不知道问题是什么,我做错了什么?

       

网上收集的解决方案 "Socket.io发射callback不在服务器端激发?"

接收方计算机调用它时,会在发件人计算机上执行回叫

看看这个代码:

服务器:

 io.sockets.on('connection', connectionFunc); function connectionFunc (socket) { socket.emit('delete hint', "data for client", callThis); } //this function is executed when client calls it function callThis (dataFromClient){ console.log("Call back fired: " + dataFromClient); } 

客户:

  socket.on('delete hint', function(data, callback) { console.log("i received: "+ data); // call back will fire only when u the next line runs callback("the callThis function on server will run"); }); 

你可以以相反的方式做到这一点。

你需要调用callback。

 socket.on('delete hint', function(data, cb){ // display a message before deleting $('#' + data.id).fadeOut(function(){ $(this).remove(); cb(null, 'done'); }); });