我刚刚开始使用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+),有人可以让我知道我在这里做错了吗?
答案 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"
}