@Galdar
Web, JS, PHP, NGINX, Linux

Как закрыть старое соединение в WebSocket()?

Получается так, что по сокету используя Workerman создается websocket сокет, который отслеживает входящие переменные в tcp-server, после чего обрабатывает их передает по 'ws://192.168.2.163:1000/?user='+id на определённый id. Так вот, есть кнопки их может быть любое количество, есть отслеживание нажатия, при нажатии на кнопку 1 - id меняется на 1, при нажатии на 2 - id меняется на 2 и т.д., при кажном нажатии открывается соединение по новому адресу ws://192.168.2.163:1000/?user=1 > ws://192.168.2.163:1000/?user=2 и т.д. по каждому соединению передается текст, но вот есть трабл, если 1 было открыто после этого было открыто соединение 2, то передается текст сразу с двух соединений. Так вот, не могу сообразить, как при кажном новом нажатии на кнопку с id старые соединения закрывались. Пробовал через ws.close(); но что-то не то делаю(
spoiler
var id = data['id'],
                            url = 'ws://192.168.2.163:1000/?user='+id, 
                            ws = new WebSocket(url);
                        ws.addEventListener('message', (event) => {
                            console.log(event.data);
                        });
  • Вопрос задан
  • 992 просмотра
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
ws.close() должен сработать. видимо действительно что-то не то делаете.
Возможно надо подождать пока на самом деле закроется. Но вообще вопрос почему у вас текст сразу в оба соединения отправляется - так не должно быть даже если вы старый сокет вообще не закрываете.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы