Socket.io, разница между socket.set() и свойством socket?
Socket.io рекомендует параметры для каждого сокета:
socket.set('foo', bar, function () {});
Переменные также могут быть установлены и доступны в сокете:
socket.foo = bar
Можно ли использовать функцию set()?
Ответ 1
Вызов socket.foo устанавливает ваше свойство в самом объекте сокета. Это не рекомендуется, потому что вы можете переопределить внутреннее свойство, которое использует сокет и зависит от него. Когда вы вызываете socket.set(), это сохраняется во внутренней структуре данных, которая не будет сталкиваться с внутренними свойствами.
Я считаю, что основная причина заключается в том, что данные, прикрепленные к сокету, являются многопроцессорными.
Если вы - одноразовый процесс, всегда будет единый процесс, и вы уверены, что не перекрываете внутренний атрибут, socket.foo = bar будет в порядке. Было бы лучше использовать get/set в качестве основы для будущей проверки и лучших практик.
В мире с несколькими процессами, если вы установите socket.foo = bar в один процесс, то в другом процессе socket.foo будет undefined.