Socket.io разница в номерах между broadcast.to и sockets.in
Socket.io ' s readme содержит следующий пример:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.join('justin bieber fans');
socket.broadcast.to('justin bieber fans').emit('new fan');
io.sockets.in('rammstein fans').emit('new non-fan');
});
В чем разница между socket.broadcast.to()
и io.sockets.in()
?
4 ответа:
socket.broadcast.to
вещает на все розетки в данной комнате, за исключением к сокету, на котором он был вызван в то время какio.sockets.in
вещает на все розетки в данной комнате.
узел.js был чем-то, что меня действительно интересовало, и я использовал его в одном из своих проектов, чтобы сделать многопользовательскую игру.
io.sockets.in().emit()
иsocket.broadcast.to().emit()
основные два метода эмиссии, которые мы используем в Socket.io комнаты (https://github.com/LearnBoost/socket.io/wiki/Rooms) номера позволяют простое разделение подключенных клиентов. Это позволяет создавать события с подмножествами списка подключенных клиентов и дает простой способ управления их.они позволяют нам управлять подмножествами списка подключенных клиентов (которые мы называем комнатами) и имеют аналогичные функции, такие как основные socket.io функции
io.sockets.emit()
иsocket.broadcast.emit()
.в любом случае я постараюсь дать примеры кодов с комментариями, чтобы объяснить. Смотрите, если это поможет;
Socket.io Комнаты
i) io.sockets.in (). emit ();
/* Send message to the room1. It broadcasts the data to all the socket clients which are connected to the room1 */ io.sockets.in('room1').emit('function', {foo:bar});
ii) гнездо.трансляции.на().излучать();
io.sockets.on('connection', function (socket) { socket.on('function', function(data){ /* Broadcast to room1 except the sender. In other word, It broadcast all the socket clients which are connected to the room1 except the sender */ socket.broadcast.to('room1').emit('function', {foo:bar}); } }
Socket.io
i) io.розетки.излучать();
/* Send message to all. It broadcasts the data to all the socket clients which are connected to the server; */ io.sockets.emit('function', {foo:bar});
ii) гнездо.транслировать.излучать();
io.sockets.on('connection', function (socket) { socket.on('function', function(data){ // Broadcast to all the socket clients except the sender socket.broadcast.emit('function', {foo:bar}); } }
Ура
обновление 2017: я рекомендую начать смотреть на родные websockets, так как они станут стандартными позже.
простой пример:
синтаксис запутан в socketio. Кроме того, каждая розетка автоматически подключается к собственной комнате с идентификатором
socket.id
(так работает приватный чат в socketio, они используют комнаты).отправить отправителю, и никто другой
socket.emit('hello', msg);
отправить всем в том числе отправителя(если отправитель находится в комнате) в комната "моя комната"
io.to('my room').emit('hello', msg);
отправить всем кроме отправителя(если отправитель находится в комнате) в комната "моя комната"
socket.broadcast.to('my room').emit('hello', msg);
отправить всем в ,в том числе отправитель
io.emit('hello', msg); // short version io.sockets.emit('hello', msg);
отправить только в определенный сокет (частный чат)
socket.broadcast.to(otherSocket.id).emit('hello', msg);