socket.io – 服务器上的callback()不执行

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

不过,我看到callback函数在客户端显示为“未定义”。 从我阅读的文档中,我认为这应该工作( https://github.com/LearnBoost/Socket.IO/wiki/Migrating-0.6-to-0.7+ ),所以有人请让我知道我在做什么这里错了吗?

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

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

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

如果您将callback作为客户端上的函数callback() ,则会在服务器端激活您的函数,因此它会在您的服务器上使用console.log。 如果你只是想发送消息从服务器到客户端,为什么要2callback? 你可以把它放在数据中: {id:id,something:else) 。 如果你想logging在客户端上的东西;

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