Size: a a a

Node.js — русскоговорящее сообщество

2019 October 30

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
Vitaliy
если на обьект channel  тогда  получается событие data будет срабатівать только в том окне в котором я чтото печатаю и после на обьекте channel вызывать событие broadcast которое вызовет this.subscriptions[id], не могу понять как получается что события вызываются во всех окнах кроме того что я пишу?
это ж нодовский код приведен. он только на сервере запускается. в браузере другой код работает
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
так я не говорю о браузере
источник

AM

Aleksandr Moskvitin in Node.js — русскоговорящее сообщество
ктонибудь делал оберточку для v-switch из вуетифая?
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
через телнет подключение
источник

AM

Aleksandr Moskvitin in Node.js — русскоговорящее сообщество
не работает v-model почемуто (
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
Vitaliy
если на обьект channel  тогда  получается событие data будет срабатівать только в том окне в котором я чтото печатаю и после на обьекте channel вызывать событие broadcast которое вызовет this.subscriptions[id], не могу понять как получается что события вызываются во всех окнах кроме того что я пишу?
в переменную id помещается текущий отправитель (айпи+порт).

далее вызывается событие join, которое создает обработчик события broadcast. при этом id текущего отправителя остается в переменной id. тут замыкание создается.

далее событие data вызывает обработчик broadcast, передавая ему id клиентов. и этот обработчик сравнивает их айди с текущим.

вроде так
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
далее событие data вызывает обработчик broadcast, передавая ему id клиентов.

я не могу понять как получается что вызывается broadcast на полностью всех сокетах а не только на том с которого идет отправка и соответственно только одной функции this.subscriptions[id] айди которой будет равен ид отправителя
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
точнее при инициировании события  join подвязывается новый слушатель события broadcast каждому сокету
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
Vitaliy
далее событие data вызывает обработчик broadcast, передавая ему id клиентов.

я не могу понять как получается что вызывается broadcast на полностью всех сокетах а не только на том с которого идет отправка и соответственно только одной функции this.subscriptions[id] айди которой будет равен ид отправителя
так может просто отладчиком пройтись и посмотреть что вызывается. ну или логи добавить
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
получается у меня у каждой сущности сокета есть одинаковое событие broadcast
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
а разве я могу вешать на один обьект одно и тоже собітие несколько раз?
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
Vitaliy
далее событие data вызывает обработчик broadcast, передавая ему id клиентов.

я не могу понять как получается что вызывается broadcast на полностью всех сокетах а не только на том с которого идет отправка и соответственно только одной функции this.subscriptions[id] айди которой будет равен ид отправителя
событие join добавляет подписывает каждый сокет на событие broadcast. поэтому оно на всех вызывается
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
Vitaliy
а разве я могу вешать на один обьект одно и тоже собітие несколько раз?
join создает для каждого сокета свой обработчик события broadcast
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
channel.on('broadcast', this.subscriptions[1]);
channel.on('broadcast', this.subscriptions[2]);
channel.on('broadcast', this.subscriptions[3]);
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
так получается, на одном обьекте одно и тоже событие но разные коллбеки?
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
Vitaliy
так получается, на одном обьекте одно и тоже событие но разные коллбеки?
ну да, у события может быть несколько слушателей
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
Vitaliy
channel.on('broadcast', this.subscriptions[1]);
channel.on('broadcast', this.subscriptions[2]);
channel.on('broadcast', this.subscriptions[3]);
у channel есть некий внутренний объект listeners (условно говоря). в котором ключи — название событий, а значения — массив с коллбеками этого события.

channel.on делает что-то вроде listeners[channel_name] = callback

а channel.emit просто проходится в цикле по коллбекам из listeners[channel_name] и вызывает их
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
у channel есть некий внутренний объект listeners (условно говоря). єто особенность именно класса  events? чтобі мне немного понять как используется this в данном случае мне надо посмотреть его в документации?
источник

V

Vitaliy in Node.js — русскоговорящее сообщество
я думал просто не понимаю как this работает
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
Vitaliy
у channel есть некий внутренний объект listeners (условно говоря). єто особенность именно класса  events? чтобі мне немного понять как используется this в данном случае мне надо посмотреть его в документации?
да, это events. но с пониманием this это не поможет. this — это уже особенность самого джаваскрипта.
источник