Пытаюсь познакомиться с socket.io и node. https://socket.io/docs/rooms-and-namespaces/

Это моя ссылка.

var socketIO = require('socket.io')(http);
 socketIO.on('connection', function(socket) { 
 socket.join(data.room);})
 socketIO.in(users[key].room).emit('newmsg', data); 
        socketIO.to(users[key].room).emit('newmsg', data); 

Здесь код с socketIO.in дает вывод, тогда как socketIO.to не
Но согласно их документации in и to должны возвращать те же o / p. Кто-нибудь, пожалуйста, объясните мне критическую разницу между ними.

0
Sachin S 25 Апр 2018 в 09:01

1 ответ

Лучший ответ

Прямо в socket.io doc:

namespace.in(room)

Synonym of namespace.to(room).

Итак, .to() и .in() одинаковы.


И если вы посмотрите в код , ты видишь это:

Namespace.prototype.to =
Namespace.prototype.in = function(name){
  if (!~this.rooms.indexOf(name)) this.rooms.push(name);
  return this;
};

Таким образом, и .to(), и .in() запускают один и тот же код, поэтому любая разница, которую вы думаете, что видите, не из-за разницы между вызовом .to() или .in(). Это должно быть из-за чего-то другого. Вам нужно будет показать нам воспроизводимый набор кода, который показывает некоторую разницу, чтобы мы помогли вам отладить это.

1
jfriend00 25 Апр 2018 в 06:35