Node.js socket.io-服务器emit()上的回调未执行
我刚开始使用socket.io.js,并试图在向客户端发送消息后立即在服务器上执行一个函数。我的代码如下: 服务器: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
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)?是的。它似乎不起作用。也许你应该使用另一个事件。