Я работаю над проектом чат-бота, в котором мы открываем соединение через веб-сокет для передачи сообщений чата.
Иногда мы получаем повторяющиеся сообщения туда и обратно. Подозреваю, что загружается второй клиент. Я хочу изменить функцию boot(), чтобы она проверяла существующие подключения к веб-сокетам (и либо отменяла загрузку, либо сначала закрывала все остальные подключения).
Есть ли способ получить это с точки зрения ванильного javascript? или мне, возможно, нужно что-то сделать из бэкэнда?
Я использую экспресс и nodejs, но я думаю, что то, что вы упомянули о помещении экземпляров в какой-то массив, вероятно, лучший метод.
Другой вариант — создать оболочку вокруг объекта WebSocket; как функция currentWebsocket, которая открывает WS-соединение при первом запуске, затем сохраняет его в переменной и возвращает при последующих вызовах



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я пытался понять это, глядя на код, но даже без номера строки, в которой появляется ошибка, это все равно довольно сложно.
Я полагаю, что проблема здесь:
conn.send('USER_CONNECTED:' + conn.id); // send the connect message to ONE user
conn.broadcast('USER_DISCONNECTED:' + conn.id); // send the disconnect to ALL users
Таким образом, кажется, что вы просто пропускаете широковещательный вызов, когда пользователь подключается.
Чтобы получить дескриптор всех соединений веб-сокетов на стороне клиента, вы можете поместить их в глобальный массив веб-сокетов в памяти ваших клиентов, как только вы их откроете, и в какой-то произвольный момент проверить, сколько экземпляров веб-сокетов было помещено в глобальный массив. . С точки зрения бэкенда это будет зависеть от используемого вами языка и фреймворка.