Разница в номерах Socket.io между broadcast.to и socket.in

В файле readme Socket.io приведен пример:

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() ?

socket.broadcast.to транслирует все сокеты в данной комнате, за исключением сокета, на котором он был вызван, в то время как io.sockets.in транслируется во все сокеты в данной комнате.

Node.js был чем-то, что меня действительно интересовало, и я использовал его в одном из моих проектов, чтобы сделать многопользовательскую игру.

io.sockets.in().emit() и socket.broadcast.to().emit() – это основные два метода emit, которые мы используем в Socket.io’s Rooms ( https://github.com/LearnBoost/socket.io / wiki / Номера ) Номера позволяют простое разбиение подключенных клиентов. Это позволяет передавать события в подмножества подключенного списка клиентов и дает простой способ их управления.

Они позволяют нам управлять подмножествами подключенного списка клиентов (которые мы называем номерами) и иметь аналогичные функции, такие как основные функции io.sockets.emit() и socket.broadcast.emit() .

В любом случае я попытаюсь привести примеры кодов с комментариями, чтобы объяснить. Посмотрите, помогает ли это;

Socket.io Rooms

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) socket.broadcast.to (). emit ();

 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.sockets.emit ();

 /* 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) socket.broadcast.emit ();

 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 : Я рекомендую начать поиск родных веб-сайтов, так как они станут стандартными позже.

Простой пример

Синтаксис запутан в 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); 

В Socket.IO 1.0, .to () и .in () одинаковы. И другие в комнате получат сообщение. Клиент отправляет сообщение не получит.

Проверьте исходный код (v1.0.6):

https://github.com/Automattic/socket.io/blob/a40068b5f328fe50a2cd1e54c681be792d89a595/lib/socket.js#L173

Interesting Posts
Давайте будем гением компьютера.