socket.io - 服务器emit()上的回调没有执行

时间:2013-04-22 12:34:14

标签: node.js socket.io

我刚刚开始使用socket.io.js,并且在我向客户端发送消息时尝试在服务器上执行一个函数。我的代码如下,

服务器:

server.on('connection', onConnect);
var id = 0;
function onConnect(socket) {
    socket.emit('myMsg', {id: ++id}, function () {console.log('id callback on server');});
}

客户端:

iosocket.on('myMsg', function(data, callback) {
    console.log('id:', data.id, callback);
});

但是我看到回调函数在客户端上显示为“未定义”。根据我在文档中看到的内容,我认为这应该有效(https://github.com/LearnBoost/Socket.IO/wiki/Migrating-0.6-to-0.7+),有人可以让我知道我在这里做错了吗?

2 个答案:

答案 0 :(得分:0)

我认为callback必须是一个功能。试试这个:

iosocket.on('myMsg', function(data, callback) {
    console.log('id:', data.id);
    callback();
});

有关示例,请参阅以下链接的确认部分: http://socket.io/#how-to-use

答案 1 :(得分:0)

如果您在客户端上将回调作为函数callback()调用,它将在服务器端激活您的函数,因此它将在您的服务器上调用console.log。 如果你只想从服务器向客户端发送消息,为什么要进行2次回调?你可以把它放在数据中:{id:id,something:else)。 如果你想在客户端记录那些东西;

if(data.something) {
console.log(data.something); //outputs "else"
}