Size: a a a

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

2020 May 19

AB

A B in Node.js — русскоговорящее сообщество
Подскажите пожалуйста, как правильно должна выглядеть архитектура, в моем случае. В приложении есть два модуля, один обслуживает входящие api запросы, авторизовывает, и выдает токен. А второй модуль это websocket server, он обслуживает входящие коннекции, и нужно туда передать этот токен. Делать это через

const ws = require("mywebsocketserver.js")
ws.tokenList.push(token)

ведь не правильно же? Не должен же один модуль модифицировать переменные другого?
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Товарищи господа, а как вы храните WebSocket коннекшны для дальнейшей трансляции из любой точки проекта?

Redis? Обычный Array?

Желательна максимальная производительность, чтобы не переутомился и не захотел прилечь
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
Aga Mahmudov
Товарищи господа, а как вы храните WebSocket коннекшны для дальнейшей трансляции из любой точки проекта?

Redis? Обычный Array?

Желательна максимальная производительность, чтобы не переутомился и не захотел прилечь
redis, обычный массив не масштабируется
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
С socket.io просто подключается socket.io-redis adapter
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Суть такова, что часть проекта на REST API и необходимо скидывать по сокетам определённому человеку, типа произошёл мэтч и надо сразу послать юзеру об этом по сокетам
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Grigorii K. Shartsev
С socket.io просто подключается socket.io-redis adapter
А разве сокетио хорошо чувствуют в плане производительности?
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
Aga Mahmudov
Суть такова, что часть проекта на REST API и необходимо скидывать по сокетам определённому человеку, типа произошёл мэтч и надо сразу послать юзеру об этом по сокетам
Значит надо где-то в редиске хранить список коннекшинов этого юзера
источник

И

Илья | 😶 ☮️... in Node.js — русскоговорящее сообщество
Aga Mahmudov
Суть такова, что часть проекта на REST API и необходимо скидывать по сокетам определённому человеку, типа произошёл мэтч и надо сразу послать юзеру об этом по сокетам
есть ещё такая вещь как sticky сессии, полезно будет
сокетио норм
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Grigorii K. Shartsev
redis, обычный массив не масштабируется
Если положить всё в redis и доставать откуда-угодно всё будет работать?
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
Aga Mahmudov
А разве сокетио хорошо чувствуют в плане производительности?
Хуже, чем без него. Но не надо переизобретать комнаты и самому шэрить всё через редиску.
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Grigorii K. Shartsev
Хуже, чем без него. Но не надо переизобретать комнаты и самому шэрить всё через редиску.
О удобстве socket.io знаю не по наслышке, но кто-то вроде жаловался на низкую производительность здесь в чате. Попробую сейчас
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Aga Mahmudov
Если положить всё в redis и доставать откуда-угодно всё будет работать?
?
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
Aga Mahmudov
О удобстве socket.io знаю не по наслышке, но кто-то вроде жаловался на низкую производительность здесь в чате. Попробую сейчас
Ну тут ты уже сам решаешь, критично ли для тебя эта разница в производительности, и будет ли её выигрыш стоить написания своего модуля
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
Aga Mahmudov
Если положить всё в redis и доставать откуда-угодно всё будет работать?
Да
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Grigorii K. Shartsev
Ну тут ты уже сам решаешь, критично ли для тебя эта разница в производительности, и будет ли её выигрыш стоить написания своего модуля
Да там же особо нечего изобретать :))
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
Aga Mahmudov
Да там же особо нечего изобретать :))
Комнаты через редиску, события
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Но попробую socket.io сейчас, давно не юзал
источник

AM

Aga Mahmudov in Node.js — русскоговорящее сообщество
Grigorii K. Shartsev
Комнаты через редиску, события
Понял, поищу сейчас статью про redis socket.io
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
чистый ws просто даёт соединение и отправку данных.
Обычно сверху реализуют какой-то rpc/event emitter, чтобы различать, что и зачем послали.
Потом нужны комнаты или аналог, чтобы отправлять группе соединений (например, юзеру).
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
Aga Mahmudov
Понял, поищу сейчас статью про redis socket.io
просто посмотри в оф доке
источник