问题旨在了解 socket.io 的工作原理。
如果我有一个带有多个客户端的服务器和以下函数(伪代码):
// Server-side
socket.emit('data-request', { some large object });
服务器是将大数据对象发送给每个客户端还是仅发送给具有相应(功能/事件)的客户端?
socket.on('data-request', function(data){blah blah blah});
最佳答案
不,你在那里做的事情会向连接到服务器的每个套接字发送一条消息,除了socket
套接字,如果你想的话广播到你会做的特定房间
io.sockets.in('some room name').broadcast('some data')
如果你想广播给特定房间里除了发件人以外的所有人,如果发件人在那个房间里你会这样做
socket.broadcast.to('some room name').emit('some data');
虽然首先您可能需要创建一些房间,在这种情况下您只需要做
someSocket.join('some room name')
也许这样的事情可以帮助你。
io.sockets.on('connection', function (socket) {
// let everyone know i'm here
socket.broadcast.emit('user connected');
socket.on('join-data-request-room', function(){
socket.join('data-request-room')
})
});
现在你可以这样做了
io.sockets.in('data-request-room').broadcast('new data')
它会发送给那个房间里的每个人,目前那个房间里没有人,要添加那个房间里的人,你可以在客户端(浏览器)上做这样的事情。
io.emit('join-data-request-room')
现在并且只有现在那个“客户”会在房间data-request-room
我已经几个月没有使用 socket.io,所以可能有一些我不知道的更好的方法。
关于javascript - Socket.io:发出消息是否将所有数据发送到所有客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23066474/