Веб-сервер на Node.js. Как организовать и контролировать сервис для прослушивания вебсокета для каждого активного пользователя?
И так, есть некое мобильное приложение.
Пользователь регистрируется и входит в систему,
Чтобы продолжить работу с приложением, ему необходимо сохранить ключ. Как только ключ попадает в бд, на сервере запускается прослушивание вебсокета для этого пользователя. Данные с сокета обрабатываются и отправляются пользователю в виде уведомлений.
Проблема в том, что в процессе работы сервера иногда требуется остановить прослушивание для какого-то пользователя, перезапустить сокет или открыть новый. И мне, как человеку, пришедшему с мира статически типизированных языков и мобильной разработки немного тяжело въехать в организацию подобных процессов в ноде.
Буду благодарен за любой ответ или совет.
Сокет будет стоять столько, сколько нужно на сервере, а на клиенте при неактивном подключении(без передачи данных) соединения сбрасывается, после перезагрузки появляется. Я не знаю зачем вам сокеты в приложении если достаточно юзать req/res./
Возможно, я неверно сформулировал свой вопрос. На клиенте нет сокетов. Суть задачи в том, чтобы для каждого пользователя запустить отдельное подключение к сокетам биржи.
На данный момент оно так выглядит: воркер на сервере периодически проверяет в базе данных учётные записи, после чего для каждой подходящей создает подключение к сокету - и тут у меня, собственно, возникает проблема: при следующем запуске воркера он снова создаст подключение к сокету для каждого "правильного" пользователя. В результате - дублируются данные, отправляемые на клиент.
И такой кейс: пользователь хочет остановить получение уведомлений, из клиента идёт http запрос на остановку сокета. На бекенде, при обработке такого запроса мне потребуется как-то извлечь конкретное активное подключение и его уничтожить./перезапустить.