2

我刚开始使用 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+),所以有人可以告诉我我在做什么这里错了吗?

4

2 回答 2

0

我认为callback必须是一个函数。尝试这个:

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

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

于 2013-04-23T22:54:05.267 回答
0

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

if(data.something) {
console.log(data.something); //outputs "else"
}
于 2013-12-10T01:47:09.690 回答