套接字.IO不能在多个客户端上工作

socket.io not working on several clients

本文关键字:客户端 工作 IO 不能 套接字      更新时间:2023-09-26

我试图建立一个简单的聊天客户端,我有一些问题,让它跨多个客户端工作。很可能我错过了一些非常简单的东西。当我从一个客户端发送一些东西时,它会登录到该客户端,而不会登录到其他任何客户端。

服务器

:

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行为正确,即它应该只发送给发起它的客户端。

试题:

socket.broadcast.emit('receive', data);

发送给所有人,除了原始客户端,或者

io.sockets.emit('receive', data);

发送到所有客户端,包括发送方

您希望在所有套接字上发出,而不仅仅是发送消息的套接字。所以你应该使用:

io.sockets.emit('recieve', data);

这是假设您在将数据发送到服务器之前没有在发送客户机上记录数据。在这种情况下,您需要使用:

socket.broadcast.emit('recieve', data);

将消息发送到所有连接的客户端,除了发送方

查看Socket.io的参考

编辑:特雷弗先我一步。然而,为了一些额外的澄清:io.sockets是相同的io.of('')。当您开始在scoket中使用名称空间时,了解这一点非常方便。io程序。