Node.js socket.io-服务器emit()上的回调未执行

Node.js socket.io-服务器emit()上的回调未执行,node.js,socket.io,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('myM

我刚开始使用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);
});

但是,我看到回调函数在客户机上显示为“未定义”。从我在文档上读到的内容来看,我认为这应该是可行的(),所以有人能告诉我我做错了什么吗?

我认为
回调必须是一个函数。试试这个:

iosocket.on('myMsg', function(data, callback) {
    console.log('id:', data.id);
    callback();
});
有关示例,请参见以下链接的确认部分:

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

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

我怀疑这是问题所在,但它应该是连接(套接字){
中的回调(
iosocket.on(…)
只得到一个参数,一个对象
data
,还有
socket.emit(…)
只接受两个参数,一个
id
和一个对象
data
。这不是从客户端到服务器吗?我正在寻找另一种方法(通过emit)?是的。它似乎不起作用。也许你应该使用另一个事件。