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");
});