Javascript socket.io在多个客户端上不工作
我正在尝试构建一个简单的聊天客户端,但在跨多个客户端工作时遇到了一些问题。很可能我错过了一些非常简单的事情。当我从一个客户端发送内容时,它会登录到该客户端,但不会登录到任何其他客户端 服务器:Javascript socket.io在多个客户端上不工作,javascript,socket.io,Javascript,Socket.io,我正在尝试构建一个简单的聊天客户端,但在跨多个客户端工作时遇到了一些问题。很可能我错过了一些非常简单的事情。当我从一个客户端发送内容时,它会登录到该客户端,但不会登录到任何其他客户端 服务器: var io = require('socket.io').listen(5000); io.sockets.on('connection', function (socket) { socket.on('send', function (data) { socket.emit(
var io = require('socket.io').listen(5000);
io.sockets.on('connection', function (socket) {
socket.on('send', function (data) {
socket.emit('receive', data);
});
});
var socket = io.connect('http://localhost:5000');
socket.on('receive', function(data){
console.log("Data received at " + new Date() + ": " + data);
});
客户端:
var io = require('socket.io').listen(5000);
io.sockets.on('connection', function (socket) {
socket.on('send', function (data) {
socket.emit('receive', data);
});
});
var socket = io.connect('http://localhost:5000');
socket.on('receive', function(data){
console.log("Data received at " + new Date() + ": " + data);
});
传递给回调函数的
socket
变量是连接的客户端上的句柄,因此socket.emit
的行为正确,即它应该只发送给发起它的客户端
尝试:
发送给除发起客户端以外的所有人,或
io.sockets.emit('receive', data);
发送到包括发起人在内的所有客户端。传递到回调函数的
socket
变量是连接的客户端上的句柄,因此socket.emit
行为正常,即只应发送到发起它的客户端
尝试:
发送给除发起客户端以外的所有人,或
io.sockets.emit('receive', data);
发送到所有客户端,包括发起者。您希望在所有套接字上发出,而不仅仅是发送消息的套接字。 因此,您应该使用:
io.sockets.emit('recieve', data);
这是假设在将数据发送到服务器之前,您没有在发送客户机上记录数据。在这种情况下,您需要使用:
socket.broadcast.emit('recieve', data);
将消息发送到除发件人之外的所有连接的客户端
编辑:特雷弗打败了我。然而,对于一些额外的澄清:
io.sockets
与io.of(“”)
相同。当您开始在scoket.io应用程序中使用名称空间时,您可以方便地了解这一点。您希望在所有套接字上发出消息,而不仅仅是在发送消息的套接字上。
因此,您应该使用:
io.sockets.emit('recieve', data);
这是假设在将数据发送到服务器之前,您没有在发送客户机上记录数据。在这种情况下,您需要使用:
socket.broadcast.emit('recieve', data);
将消息发送到除发件人之外的所有连接的客户端
编辑:特雷弗打败了我。然而,对于一些额外的澄清:io.sockets
与io.of(“”)
相同。当您开始在scoket.io应用程序中使用名称空间时,了解这一点非常方便