Node.js sockets.socket(socket_id).emit()-没有方法';插座';
我运行的是nodejs server+express+socket.io版本1.0.4,在我的应用程序中一切正常,但我无法通过以下方式将消息从服务器端发送到客户端:Node.js sockets.socket(socket_id).emit()-没有方法';插座';,node.js,socket.io-1.0,Node.js,Socket.io 1.0,我运行的是nodejs server+express+socket.io版本1.0.4,在我的应用程序中一切正常,但我无法通过以下方式将消息从服务器端发送到客户端: socket_server.sockets.socket(socket_id).emit("message", data); 当我尝试时,服务器抛出以下错误: TypeError: Object #<Namespace> has no method 'socket' 将代码的最后一部分更改为: var io
socket_server.sockets.socket(socket_id).emit("message", data);
当我尝试时,服务器抛出以下错误:
TypeError: Object #<Namespace> has no method 'socket'
将代码的最后一部分更改为:
var io = require('socket.io').listen(server);
io.on('connection', function(socket) {
socket.emit('msg',data);
//to only that client
io.sockets.emit('msg',data);
//to all sockets.
}
io
是您的socket\u服务器
。您可以监听它的连接,而不是它的套接字。在1.0中,您应该使用:
io.sockets.connected[socketid].emit();
io.to(socket.id).emit();
发送到特定的客户端
socket_server.sockets.socket(socket_id).emit();
已在socket.io 1.0中被替换。=1.0版中您应使用:
io.sockets.connected[socketid].emit();
io.to(socket.id).emit();
其中socket.id是字符串形式的id。victorwoo在下面的线程中找到了解决方案
注:上述解决方案由Tony Chen描述
io.sockets.connected[socketid].emit();
在1.x版本中,由于io.sockets.connected是一个套接字对象数组,而不是字符串(id),因此您可以在文档中找到最旧版本的迁移提示列表,尤其是 向默认命名空间中的所有客户端广播 以前: emit('eventname','eventdata') 现在: io.emit('eventname','eventdata')
红色文档为什么要使用socket\u server.sockets.socket(socket\u id)而不是演示中给出的方式。如果这是旧版本的代码,它可能无法与1.0一起使用。尝试为新版本折射代码。演示中给出了哪种方式发送到一个特定的套接字?