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" }