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]}
我不知道问题是什么,我做错了什么?
接收方计算机调用它时,会在发件人计算机上执行回叫
看看这个代码:
服务器:
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'); }); });