我的服务器正确发出事件,但emit回调永远不会起作用。在下面,我的控制台上没有记录任何内容:
服务器:
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();
});
});
我还尝试将客户端代码作为函数(data,fn),以防回调需要包含在接收函数中。
我正在使用Windows,当socket.io发出事件时,我的命令提示符显示以下内容:
websocket writing 5:::{"name":"delete hint", "args":[{"id":"1"}, null]}
我无法弄清问题是什么,我做错了什么?
答案 0 :(得分:3)
当接收方计算机调用它时,会在发送方计算机上执行回调
看一下这段代码:
服务器强>
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");
});
你可以用相反的方式做到这一点。
答案 1 :(得分:1)
您需要拨回电话。
socket.on('delete hint', function(data, cb){
// display a message before deleting
$('#' + data.id).fadeOut(function(){
$(this).remove();
cb(null, 'done');
});
});