Страница 21 из 21

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

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

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

 if(postToWebsocket("test","test")){
  //DebMes(("everyminute - websockets connected");
 }else{
  //DebMes("everyminute - websockets disconnected!");
 }

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

Добавлено: Пт авг 12, 2022 6:36 am
Bagir
xor писал(а):
Чт авг 11, 2022 9:16 pm
статус подключения вебсокетов в панели управления есть, кол-во клиентов в свойство выводится, у себя так проверяю живость
Спасибо! Думал о таком способе, только ещё не копал функцию postToWebsocket(). Но это, наверное, проверит только возможность постить в сокет со стороны сервера. Больший интерес вызывает состояние подключения к серверу на конкретном клиенте. Например вот эта запись из консоли браузера
admin.php:61 ... Подключение к серверу ws://10.10.3.2:8001/majordomo
admin.php:77 ✓ Подключен к серверу
Наблюдая за работой сокетов, я вижу, что бывает ситуация, когда сервер с успехом постит в сокет, но клиент не может к нему подключиться. Причем кто то умудряется это сделать, и держит соединение, а кто то никак не может подключиться.
У меня сейчас вторые сутки работает без проблем. На всех терминалах запущены только страницы с меню. При запуске сцен сокеты не падают, но и подключиться к ним не получается. Причем я вижу записи, что клиент с этим IP адресом пришел на сервер, и три раза сразу вышел. Причина скорее всего в моем быдлокоде, которого там с избытком. Много всего написано ещё в самом начале работы с МД. Давно конечно пора навести там порядок. Я постараюсь найти что именно приводит к такому результату. Если точно с эмитирую ситуацию, то получится поставить заплатки на сервере. Но для этого хорошо бы получить "индикатор" работы сокетов на клиенте. Пока буду смотреть консоль браузера.

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

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

По поводу индикатора. Вытащить бы в свое меню строку как в панели управления "Статус WebSocket Нет подключения" Как я понимаю, в консоль записи прилетают из файла websockets.html

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

Добавлено: Пт авг 12, 2022 12:02 pm
Bagir
И ещё наблюдение, причем весьма любопытное:
Смотрим лог
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 больше не глючит.
Есть идеи?

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

Добавлено: Пт авг 12, 2022 12:36 pm
Logrus
в админке много напихали используя старые неоптимизированые куски
и сейчас это все сразу одновременно
у веб сокетов помнится логирование еще есть, вкл в конфиге
запусти мскл метр и открой админку на другом и посмотри результат

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

Добавлено: Пт авг 12, 2022 12:43 pm
Bagir
Logrus писал(а):
Пт авг 12, 2022 12:36 pm
в админке много напихали используя старые неоптимизированые куски
и сейчас это все сразу одновременно
у веб сокетов помнится логирование еще есть, вкл в конфиге
запусти мскл метр и открой админку на другом и посмотри результат
Я немного дописал предыдущее сообщение. Может это приоткроет тайну. Админка прекрасно работает. По крайней мере не вызывает у меня сбоев WS.

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

Добавлено: Пт авг 12, 2022 1:12 pm
Logrus
https://github.com/sergejey/majordomo/b ... n.php#L246

там пинг? отправляется из чекконнектион
в админке она вроде б юзается
https://github.com/sergejey/majordomo/b ... nt.php#L98

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

Добавлено: Пт авг 12, 2022 1:24 pm
Bagir
Logrus писал(а):
Пт авг 12, 2022 1:12 pm
там пинг? отправляется из чекконнектион
Это я раскопал. Интересно другое, почему пинг только с моего аккаунта идет, а с другого аккаунта, этого же ПК и браузера, его нет.
Не хотел убирать эту ситуацию, но надо было проверить почему. В итоге после удаления "Файлы cookie и другие данные сайтов" пин-понгов нет и WS больше не глючит. Теперь бы понять что именно заваливает WS? т.к. ситуация наверное повториться когда-нибудь.

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

Добавлено: Ср авг 17, 2022 10:00 pm
tarasfrompir
Bagir писал(а):
Пт авг 12, 2022 1:24 pm
Logrus писал(а):
Пт авг 12, 2022 1:12 pm
там пинг? отправляется из чекконнектион
Это я раскопал. Интересно другое, почему пинг только с моего аккаунта идет, а с другого аккаунта, этого же ПК и браузера, его нет.
Не хотел убирать эту ситуацию, но надо было проверить почему. В итоге после удаления "Файлы cookie и другие данные сайтов" пин-понгов нет и WS больше не глючит. Теперь бы понять что именно заваливает WS? т.к. ситуация наверное повториться когда-нибудь.
Я обновлял сами ВС и все работало как по накатанному без пропаж...
инструкции уже к сожалению нету, но и все равно она бы устарела

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

Добавлено: Вт авг 23, 2022 3:11 pm
Bagir
Я тут не раз читал, что сокеты не работают через VPN. А вот и не правда, всё работает. Все варианты не пробовал, но вот как у меня: На роутере (микротик) сервер для L2tp. В настройках телефона соединение. В "Дополнительно" добавил маршрут пересылки ip адресов своей локальной сети, чтобы всё нужное сразу летело домой. И гугловский DNS, чтобы не брать остальной трафик из дома.
За корректность настроек не ручаюсь, сисадмин из меня на троечку, но всё работает. С мобильного интернета лазаю к себе домой.