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.emit
(在函数socket_call_data中)似乎只向连接的用户发出。所以,在做了一些阅读之后,我使用了io.broadcast.emit
。这很好用,但它不包括连接的用户 - 我也想要发送数据。所以,最后我发现了io.sockets.emit
,它应该发送给所有客户。但相反,我得到错误:
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未定义...
我错了什么?
由于
答案 0 :(得分:0)
当用户连接时,您似乎用一个套接字覆盖了io
变量。将io
活动的connection
arg更改为socket
,而不是:
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.emit()
应该向所有套接字发出。
答案 1 :(得分:0)
发生的事情是您在函数
中传递io
io.on('connection', function(io){
//Your Code here
});
因此,您在函数内传递的全局io
和io
变得模棱两可。您需要做的就是将函数内部传递的io
更改为其他变量,如socket
或其他变量。
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");
});
这应该会帮助你。