Поддержка websockets

Новые релизы, обновления и т.п.

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Поддержка websockets

Сообщение xor » Чт авг 11, 2022 9:16 pm

Bagir писал(а):
Чт авг 11, 2022 7:38 pm
Всё новое, это хорошо забытое старое. Вот и я вернулся к теме сокетов. Никогда у меня эта штука не работала. Но причина не в них. Всё же удалось локализовать проблему. Домашние страницы со сценами валят сервер довольно быстро и очень успешно. Что там я на баракодил, пока не знаю. Но, теперь уж точно доберусь. Сейчас на трех устройствах открыто просто меню. Всё работает отлично. У WC сервера 4 клиента. Технология WC вообще радует. База не долбится валом запросов с терминалов. Обновление моментальное.
Задался идеей добавить в меню маркер работы сокетов. Может быть даже иконкой в верхней строке. Кто нибудь подобное делал? Было бы весьма полезно видеть на клиенте, по какой технологии обновляются свойства.
статус подключения вебсокетов в панели управления есть, кол-во клиентов в свойство выводится, у себя так проверяю живость

Код: Выделить всё

 if(postToWebsocket("test","test")){
  //DebMes(("everyminute - websockets connected");
 }else{
  //DebMes("everyminute - websockets disconnected!");
 }
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Поддержка websockets

Сообщение Bagir » Пт авг 12, 2022 6:36 am

xor писал(а):
Чт авг 11, 2022 9:16 pm
статус подключения вебсокетов в панели управления есть, кол-во клиентов в свойство выводится, у себя так проверяю живость
Спасибо! Думал о таком способе, только ещё не копал функцию postToWebsocket(). Но это, наверное, проверит только возможность постить в сокет со стороны сервера. Больший интерес вызывает состояние подключения к серверу на конкретном клиенте. Например вот эта запись из консоли браузера
admin.php:61 ... Подключение к серверу ws://10.10.3.2:8001/majordomo
admin.php:77 ✓ Подключен к серверу
Наблюдая за работой сокетов, я вижу, что бывает ситуация, когда сервер с успехом постит в сокет, но клиент не может к нему подключиться. Причем кто то умудряется это сделать, и держит соединение, а кто то никак не может подключиться.
У меня сейчас вторые сутки работает без проблем. На всех терминалах запущены только страницы с меню. При запуске сцен сокеты не падают, но и подключиться к ним не получается. Причем я вижу записи, что клиент с этим IP адресом пришел на сервер, и три раза сразу вышел. Причина скорее всего в моем быдлокоде, которого там с избытком. Много всего написано ещё в самом начале работы с МД. Давно конечно пора навести там порядок. Я постараюсь найти что именно приводит к такому результату. Если точно с эмитирую ситуацию, то получится поставить заплатки на сервере. Но для этого хорошо бы получить "индикатор" работы сокетов на клиенте. Пока буду смотреть консоль браузера.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Поддержка websockets

Сообщение Bagir » Пт авг 12, 2022 11:12 am

Завалились всё же. И вот что важно. В циклах панели управления написано "остановлен". Но при попытке запустить через отдельную консоль получаю
C:\xampp\htdocs>C:\xampp\htdocs>C:\xampp\htdocs>C:/xampp/php/php.exe -q ./scripts/cycle_websockets.php
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
Следовательно, процесс этого цикла до сих пор существует. Поэтому перезапустить его не получится, пока не грохнешь этот процесс. Знать бы ещё как его найти в диспетчере. Там они все одинаковые. Приходится перезапускать все циклы. Получается, что МД не может завершить этот процесс. Вечерком покопаю в эту сторону.

По поводу индикатора. Вытащить бы в свое меню строку как в панели управления "Статус WebSocket Нет подключения" Как я понимаю, в консоль записи прилетают из файла websockets.html
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Поддержка websockets

Сообщение Bagir » Пт авг 12, 2022 12:02 pm

И ещё наблюдение, причем весьма любопытное:
Смотрим лог
C:\xampp\htdocs>C:/xampp/php/php.exe -q ./scripts/cycle_websockets.php
2022-08-12 11:46:18 [info] Server created (Mem: 4 mb)
Client connected (10.10.3.2). Total clients: 1
Client connected (127.0.0.1). Total clients: 2
Client connected (10.10.3.21). Total clients: 3
Client connected (10.10.3.115). Total clients: 4
Client dicconnected (10.10.3.115). Total clients: 3
Client dicconnected (10.10.3.115). Total clients: 3
Client dicconnected (10.10.3.115). Total clients: 3
10.10.3.2 это ip сервера, на котором была открыта страничка админки МД

Видно, как сразу к WS серверу прицепились два клиента. МД 127.0.0.1 и браузер с этого же ПК 10.10.3.2
Затем я открыл меню на терминале 10.10.3.21 Всё работало.
Далее открыл одну страничку админки на ноутбуке 10.10.3.115
Тут сразу пришло 4 последних записи. После этого больше никто не смог прицепиться к WS даже повторно. Что самое удивительное, WS с ноутом работает без проблем. Но сколько бы я сейчас это не повторял, результат один. 4 записи и сервер хоть не падает, но прицепиться к нему уже никак. На данный момент у меня открыто множество страниц в браузере, но все странички с МД были закрыты. Как бы это глупо не звучало, но вероятно что то остается в браузере, что и приводит к такой ситуации.

Продолжаем
Закрыл все вкладки на ноуте в хроме. Перезапустил ноут. Открываю админку МД, и ситуация точно такая же.
А вот если на этом же ноуте, этот же хром открыть под другим пользователем, то всё работает. Получаю только одну запись, и сокеты тикают.
C:\xampp\htdocs>C:/xampp/php/php.exe -q ./scripts/cycle_websockets.php
2022-08-12 12:26:09 [info] Server created (Mem: 4 mb)
Client connected (127.0.0.1). Total clients: 1
Client connected (10.10.3.21). Total clients: 2
Client connected (10.10.3.115). Total clients: 3
Client dicconnected (10.10.3.115). Total clients: 2
Client connected (10.10.3.115). Total clients: 3
Client dicconnected (10.10.3.115). Total clients: 2
Client dicconnected (10.10.3.115). Total clients: 2
2022-08-12 12:33:53 [info] [client 10.10.3.115:49521] Ping? Pong! (Mem: 6 mb)

Видно, как я первый раз лазал с этого же компа и браузера под другим пользователем. А второй раз под собой, и бах, сервер WS выведен из строя. И что за Ping? Pong! :mrgreen: Пойду в коде смотреть.

В итоге, сейчас запустил два браузера хром под разными пользователями. Админку открыл из под другого. Пишу на форум со своего. Работает отлично, и никаких пин-понгов. Дико интересно, почему пин-понг идет только когда я лезу к МД из хрома под своим аккаунтом. И связан ли пин-понг с отказом WS.
В итоге любопытство взяло верх. После удаления "Файлы cookie и другие данные сайтов" пин-понгов нет и WS больше не глючит.
Есть идеи?
Последний раз редактировалось Bagir Пт авг 12, 2022 1:18 pm, всего редактировалось 4 раза.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Поддержка websockets

Сообщение Logrus » Пт авг 12, 2022 12:36 pm

в админке много напихали используя старые неоптимизированые куски
и сейчас это все сразу одновременно
у веб сокетов помнится логирование еще есть, вкл в конфиге
запусти мскл метр и открой админку на другом и посмотри результат
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Поддержка websockets

Сообщение Bagir » Пт авг 12, 2022 12:43 pm

Logrus писал(а):
Пт авг 12, 2022 12:36 pm
в админке много напихали используя старые неоптимизированые куски
и сейчас это все сразу одновременно
у веб сокетов помнится логирование еще есть, вкл в конфиге
запусти мскл метр и открой админку на другом и посмотри результат
Я немного дописал предыдущее сообщение. Может это приоткроет тайну. Админка прекрасно работает. По крайней мере не вызывает у меня сбоев WS.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Поддержка websockets

Сообщение Logrus » Пт авг 12, 2022 1:12 pm

https://github.com/sergejey/majordomo/b ... n.php#L246

там пинг? отправляется из чекконнектион
в админке она вроде б юзается
https://github.com/sergejey/majordomo/b ... nt.php#L98
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Поддержка websockets

Сообщение Bagir » Пт авг 12, 2022 1:24 pm

Logrus писал(а):
Пт авг 12, 2022 1:12 pm
там пинг? отправляется из чекконнектион
Это я раскопал. Интересно другое, почему пинг только с моего аккаунта идет, а с другого аккаунта, этого же ПК и браузера, его нет.
Не хотел убирать эту ситуацию, но надо было проверить почему. В итоге после удаления "Файлы cookie и другие данные сайтов" пин-понгов нет и WS больше не глючит. Теперь бы понять что именно заваливает WS? т.к. ситуация наверное повториться когда-нибудь.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Поддержка websockets

Сообщение tarasfrompir » Ср авг 17, 2022 10:00 pm

Bagir писал(а):
Пт авг 12, 2022 1:24 pm
Logrus писал(а):
Пт авг 12, 2022 1:12 pm
там пинг? отправляется из чекконнектион
Это я раскопал. Интересно другое, почему пинг только с моего аккаунта идет, а с другого аккаунта, этого же ПК и браузера, его нет.
Не хотел убирать эту ситуацию, но надо было проверить почему. В итоге после удаления "Файлы cookie и другие данные сайтов" пин-понгов нет и WS больше не глючит. Теперь бы понять что именно заваливает WS? т.к. ситуация наверное повториться когда-нибудь.
Я обновлял сами ВС и все работало как по накатанному без пропаж...
инструкции уже к сожалению нету, но и все равно она бы устарела
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Поддержка websockets

Сообщение Bagir » Вт авг 23, 2022 3:11 pm

Я тут не раз читал, что сокеты не работают через VPN. А вот и не правда, всё работает. Все варианты не пробовал, но вот как у меня: На роутере (микротик) сервер для L2tp. В настройках телефона соединение. В "Дополнительно" добавил маршрут пересылки ip адресов своей локальной сети, чтобы всё нужное сразу летело домой. И гугловский DNS, чтобы не брать остальной трафик из дома.
За корректность настроек не ручаюсь, сисадмин из меня на троечку, но всё работает. С мобильного интернета лазаю к себе домой.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить