Javascript 使用socket.io发送到所有客户端时出现问题
这是我当前的代码,问题是Javascript 使用socket.io发送到所有客户端时出现问题,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,这是我当前的代码,问题是io.emit(在函数socket\u call\u数据中)似乎只向连接的用户发出。所以,在读了一些之后,我使用了io.broadcast.emit。这非常有效,但是它不包括连接的用户-我也希望被发送数据的用户。所以,最后我找到了关于io.sockets.emit的信息,它应该会发送给所有客户机。但是,我得到了一个错误: var io = require('socket.io').listen(server1); io.on('connection', function(
io.emit
(在函数socket\u call\u数据中)似乎只向连接的用户发出。所以,在读了一些之后,我使用了io.broadcast.emit
。这非常有效,但是它不包括连接的用户-我也希望被发送数据的用户。所以,最后我找到了关于io.sockets.emit
的信息,它应该会发送给所有客户机。但是,我得到了一个错误:
var io = require('socket.io').listen(server1);
io.on('connection', function(io){
socket_call_data = function(some,data){
io.emit("new_peer_data", result);
}
io.on('event', function(data){
//doing stuff
socket_call_data(some,data);
});
});
因此io。套接字未定义发射
我做错了什么
谢谢当用户连接时,您似乎正在用一个套接字覆盖
io
变量。将connection
事件上的io
arg改为socket
:
Missing error handler on `socket`.
TypeError: Cannot call method 'emit' of undefined
at socket_call_data (/var/www/html/live_nodejs/handle.js:47:20)
然后,
io.emit()
应该发送到所有套接字。发生的情况是,您正在函数中传递io
var io = require('socket.io').listen(server1);
io.on('connection', function(socket){
socket_call_data = function(some,data){
io.emit("new_peer_data", result);
}
socket.on('event', function(data){
//doing stuff
socket_call_data(some,data);
});
});
因此,在函数内部传递的全局io
和io
变得不明确。您所需要做的就是,将在函数中传递的io
更改为其他变量,如socket
或其他什么
io.on('connection', function(io){
//Your Code here
});
这应该对你有所帮助
io.on('connection', function(socket){
//Your code here
socket.emit("some event specific to this particular socket");
io.sockets.emit("This event will be broadcasted to everyone connected");
});