Как я могу получить список соединений через веб-сокет?

Я работаю над проектом чат-бота, в котором мы открываем соединение через веб-сокет для передачи сообщений чата.

Иногда мы получаем повторяющиеся сообщения туда и обратно. Подозреваю, что загружается второй клиент. Я хочу изменить функцию boot(), чтобы она проверяла существующие подключения к веб-сокетам (и либо отменяла загрузку, либо сначала закрывала все остальные подключения).

Есть ли способ получить это с точки зрения ванильного javascript? или мне, возможно, нужно что-то сделать из бэкэнда?

Чтобы получить дескриптор всех соединений веб-сокетов на стороне клиента, вы можете поместить их в глобальный массив веб-сокетов в памяти ваших клиентов, как только вы их откроете, и в какой-то произвольный момент проверить, сколько экземпляров веб-сокетов было помещено в глобальный массив. . С точки зрения бэкенда это будет зависеть от используемого вами языка и фреймворка.

Some random IT boy 12.03.2019 22:18

Я использую экспресс и nodejs, но я думаю, что то, что вы упомянули о помещении экземпляров в какой-то массив, вероятно, лучший метод.

Rachelle Janssen 12.03.2019 23:51

Другой вариант — создать оболочку вокруг объекта WebSocket; как функция currentWebsocket, которая открывает WS-соединение при первом запуске, затем сохраняет его в переменной и возвращает при последующих вызовах

Redwolf Programs 08.04.2021 22:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
10
3
2 687
1

Ответы 1

Я пытался понять это, глядя на код, но даже без номера строки, в которой появляется ошибка, это все равно довольно сложно.

Я полагаю, что проблема здесь:

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

Таким образом, кажется, что вы просто пропускаете широковещательный вызов, когда пользователь подключается.

Другие вопросы по теме