powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / iOS некорректно срабатывает событие onClose WebSocket
78 сообщений из 78, показаны все 4 страниц
iOS некорректно срабатывает событие onClose WebSocket
    #39674629
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется WebSocket Server Java.

Есть два клиента: iOS и Android.

Как обстоит дело на Android (Chrome):

Клиент подключается к сокету, срабатывает событие onOpen, на сообщения onMessage. При закрытии вкладки корректно срабатывает сообщение onClose.

Как обстоит дело на iOS (Chrome):

Клиент подключается к сокету, срабатывает событие onOpen, на сообщения onMessage. И вот тут начинается веселье. Если я закрою вкладку браузера, то события onClose не будет (хотя по логике вещей должно быть). Далее. Я создаю новую вкладку в браузере. Ввожу первый символ url адреса и я тут же наблюдаю onClose который вытекает в onError ибо что-то уже null. Ну и "переподключение" к сокету.

Вопрос. как сиё чудо Apple починить?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674644
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopВопрос. как сиё чудо Apple починить?
Никак, не чинить, это нормальное поведения для веба.
Попробуй клиенту на Android просто вырубить интернет - например, выдерни роутер w-fi из розетки - получишь то же самое поведение.
Пиши обработчик на событие onClose с учетом этой специфики.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674706
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopИмеется WebSocket Server Java.что за сервер?

TsyklopКлиент подключается к сокету, срабатывает событие onOpen, на сообщения onMessageкакая-то лажа.
onOpen срабатывает на подключение, а не на onMessage.

что-то у тебя с ws не то....
https://learn.javascript.ru/websockets
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674715
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Руслан ДамировичНикак, не чинить, это нормальное поведения для веба.
Попробуй клиенту на Android просто вырубить интернет - например, выдерни роутер w-fi из розетки - получишь то же самое поведение.
Пиши обработчик на событие onClose с учетом этой специфики.
При аварийных выключениях согласен - такое везде. Но я сейчас за мою ситуацию. И это не нормально. Почему на Android все хорошо, а на Apple лажа? кто криворукий? Сомневаюсь что я ибо я пользуюсь тем что готово давно, да и не только я использую.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674716
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадячто за сервер?

Java EE Tomcat 9.

вадякакая-то лажа.
onOpen срабатывает на подключение, а не на onMessage.

что-то у тебя с ws не то....
https://learn.javascript.ru/websockets

onOpen срабатывает на подключение, а onMessage когда приходят сообщения от сервера.

Было бы не то с ws или не тот ws не работало. Ибо это встроено в браузер и изменить я не могу (может и можно но я хз как да и не особо нужно).

Использую тот же ws что и по ссылке...
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674735
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
нпдо аккуратнее с формулировкаии
в других браузерах, кроме хрома, на яблоках так же?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674736
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklop,
нпдо аккуратнее с формулировкаии
в других браузерах, кроме хрома, на яблоках так же?
в других не тестил, но мне кажется что так же будет. apple все таки. у них свои правила для всех и сафари не исключение.

Но я попробую.

Но если уж в самом хроме такая беда то...
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674737
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
где ты наблюдаешь ошибку? в хроме на яблоке? на сервере?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674739
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
покажи полный код ws.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674740
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
onClose это сообщение о том , что другая сторона закрыла ws.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674741
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklop,
где ты наблюдаешь ошибку? в хроме на яблоке? на сервере?
наблюдаю срабатывание события onError на сервере ну и эксепшн. в хроме на телефоне я ошибку никак не могу увидеть ибо там нет консоли.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674742
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklop,
покажи полный код ws.
Обычный ServerEndpoint из javax.websocket-api. Тут больше дело не в сервере, а в клиенте на телефоне который инициализирует разрыв соединения. Ведь на андроиде то все нормально.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674743
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklop,
onClose это сообщение о том , что другая сторона закрыла ws.
Да. У меня логика такая что при onClose я удаляю юзера из списка подключенных пользователей к ws. иначе они будут накапливаться и накапливаться что приведет к утечке памяти.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674766
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopнаблюдаю срабатывание события onError на сервере ну и эксепшнэто не показатель ошибки , это серверная часть. должно быть только onClose.
Tsyklopв хроме на телефоне я ошибку никак не могу увидеть ибо там нет консоли.откой для себя десктопный хром и его возможности - можно увидеть всю подноготную работы хрома на телефоне
TsyklopДа. У меня логика такая что при onClose я удаляю юзера из списка подключенных пользователей к ws. иначе они будут накапливаться и накапливаться что приведет к утечке памяти.покажи код onClose. сделай пошаговую отладку в onClose.
TsyklopЕсли я закрою вкладку браузера, то события onClose не будекак ты это проверил? то, что у тебя работает с андроид не говорит о том , что нет события onClose для яблока.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674769
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopВвожу первый символ url адреса и я тут же наблюдаю onClose который вытекает в onError ибо что-то уже null.
TsyklopУ меня логика такая что при onClose я удаляю юзера из списка подключенных пользователей к wsскорее всего у тебя из списка уже удалён юзер, и ты его повторно удаляешь - вот и ошибка.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674847
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,
я не дурачок и пишу логи при каждом событии ws на сервере. И когда происходит onClose я это отчетливо вижу.

Вот держи:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@OnClose
    public void onClose(Session session, CloseReason closeReason) {
        LOGGER.info("ENDPOINT ONCLOSE - "+closeReason);
        disconnectUser(closeReason.toString(), session);
    }

    @OnError
    public void onError(Session session, Throwable ex) {
        LOGGER.error("ENDPOINT ERROR", ex);
        disconnectUser("", session);
    }
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674849
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяоткой для себя десктопный хром и его возможности - можно увидеть всю подноготную работы хрома на телефоне
с Андроидом так делал, да. Но для iOS нужен макбук или macOs - у меня ни того, ни того нет.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674851
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадякак ты это проверил? то, что у тебя работает с андроид не говорит о том , что нет события onClose для яблока.

Вижу логи сервера. У меня сервер всегда пишет логи и по ним видно то что я описал в топике
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674853
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяэто не показатель ошибки , это серверная часть. должно быть только onClose.
Ну так срабатывает onClose когда ввожу первый символ и там что-то уже null и срабатывает onError.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674896
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

что пишет
LOGGER.info("ENDPOINT ONCLOSE - "+closeReason.getCloseCode());
и
LOGGER.error("ENDPOINT ERROR", ex.getMessage());
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674917
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяLOGGER.info("ENDPOINT ONCLOSE - "+closeReason.getCloseCode());

Код: java
1.
ENDPOINT ONCLOSE - CloseReason: code [1006], reason [null]



вадяLOGGER.error("ENDPOINT ERROR", ex.getMessage());

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ENDPOINT ERROR java.io.EOFException: null
	at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1167) ~[tomcat-coyote.jar:9.0.7]
	at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1107) ~[tomcat-coyote.jar:9.0.7]
	at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:72) ~[tomcat-websocket.jar:9.0.7]
	at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171) ~[tomcat-websocket.jar:9.0.7]
	at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151) ~[tomcat-websocket.jar:9.0.7]
	at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) [tomcat-websocket.jar:9.0.7]
	at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) [tomcat-coyote.jar:9.0.7]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53) [tomcat-coyote.jar:9.0.7]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754) [tomcat-coyote.jar:9.0.7]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376) [tomcat-coyote.jar:9.0.7]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.7]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_172]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_172]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.7]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_172]
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674923
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, еще вот такое: CloseReason: code [1003], reason []
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674934
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://qaru.site/questions/151831/getting-the-reason-why-websockets-closed-with-close-code-1006



Tsyklop CloseReason: code [1003], reason []
Код: plaintext
1.
2.
3.
1003
    Удалённая сторона завершила соединение в связи с тем, что она получила данные, которые не может 
принять. Например, сторона, которая понимает только текстовые данные, может закрыть соединение с таким 
кодом, если приняла бинарное сообщение.

subprotocol используешь?

я так делаю

Код: javascript
1.
2.
3.
        con = new WebSocket("ws://" + document.location.host + "/<%=com.Singleton.PORTAL%>/WS_server");
        con.binaryType = "arraybuffer";
.....
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674939
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

попробуй на событие
Код: javascript
1.
2.
3.
4.
5.
window.onbeforeunload = function () { 

здесь явно закрыть ws 

}
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674940
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, Нет. Пользую wss соединение. binaryType не задан.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674941
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopbinaryType не задан.попробуй задать
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674944
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ws/wss не влияет (не должен влиять)

версия хрома на яблоке из последних?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674946
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, в iphone onbeforeunload считается устаревшим. Вместо него pagehide, но оно не работает на закрытие вкладки.

Изменил у себя binaryType='arraybuffer' - ничего не изменилось.

Apple как всегда молодцы, умеют жопу сделать.

Вот что заметил. Открыл я вкладку - сокет подключился, все ок. Закрыл вкладку - ноль реакции. Далее я побробовал полностью закрыть хром - вылезла ошибка которую я скидывал ну и код 1003. Так же само когда ввожу первый символ в url-е. Я хз че это за поведение такое и зачем его сделали.

Проверил сафари - все так же.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674947
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяws/wss не влияет (не должен влиять)

версия хрома на яблоке из последних?

iPhone наверно 6 или 7. Версия хрома 67.033...
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674951
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
Переходи на REST
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674956
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Tsyklop,
Переходи на REST
Не могу. Чат на REST писать не ахти как-то.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674965
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
Чат оно конечно.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674967
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopв iphone onbeforeunload считается устаревшим.считается - не значит не работат
проверить не помешает.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674977
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopв iphone onbeforeunload считается устаревшим https://caniuse.com/#search=onbeforeunload
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674979
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklopв iphone onbeforeunload считается устаревшим https://caniuse.com/#search=onbeforeunload
До проверил я уже оба этил события - не работают. В доках apple написано что именно у них он устаревший.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39674982
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopДо проверил я уже оба этил события - не работают. В доках apple написано что именно у них он устаревший.т.е. хром для яблока пишет само яблоко?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675003
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopДо проверил я уже оба этил события - не работают. В доках apple написано что именно у них он устаревший.это они в сафари могут не использовать, но это хром и он хозяин. как яблоко может запретить использовать что-то из стандартного набора
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675008
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, я так думаю что хром под iOS писался с учетом всех требований apple, иначе б его не пропустили. Как тогда объяснить что поведение что в хроме что в сафари одно и тоже?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675010
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяэто они в сафари могут не использовать, но это хром и он хозяин. как яблоко может запретить использовать что-то из стандартного набора
В данном случае хозяин apple с его идиотскими правилами и условиями. Хром сам себе хозяин на Android.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675013
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

как ты определил? что не работает?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675014
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, написал код и проверил в работе. pagehide работает, но не на закрытие вкладки. Он срабатывал когда я перезагружал страницу допустим.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675015
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, Может кинуть issue в apple?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675036
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopвадя, Может кинуть issue в apple?надо убедиться , что у тебя нет ошибок, то, что в андроид работает - не гарантия. может андроид более лоялен к ошибкам :)

onbeforeunload проверил? то что устаревшая, не значит, что не должна работать.
не для дальнейшего использования. поймать факт что вызывает ошибку.
для проверки можно кнопкой закрыть ws, и открыть новую вкладку.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675037
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopвадя, Может кинуть issue в apple?я могу проверить на своём проекте, если свяжемся по скайп или ещё как.
у меня тоже ws из tomcat , правда из 8.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675038
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ
у меня нет яблочных продуктов...
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675041
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадянадо убедиться , что у тебя нет ошибок, то, что в андроид работает - не гарантия. может андроид более лоялен к ошибкам :)

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

onbeforeunload является устаревшим именно у самого apple, а в мире очень даже работает и актуален (как всегда apple через одно место делает все)

Ну при pagehide, когда перезагружал страницу, ws закрывался корректно.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675042
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, Беру начальника телефон. Ибо у самого адекватный Android.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675044
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklopвадя, Может кинуть issue в apple?я могу проверить на своём проекте, если свяжемся по скайп или ещё как.
у меня тоже ws из tomcat , правда из 8.
Можешь просто дать урл сервера. ну и там по логам глянешь.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675050
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopМожешь просто дать урл сервера. ну и там по логам глянешь.в открытую не хочется, да и там вход по логину/паролю .
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675053
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopвадя, Беру начальника телефон. Ибо у самого адекватный Android.а это проблема :)
я могу проверить на тестовом проекте, т.е. надо чтоб он работал, чтоб ....
но надо как-то это сделать. мне интересно не наступать на эти грабли...
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675058
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, надо думать.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675062
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopвадя, надо думать.мыло в профиле...
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675066
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадямыло в профиле...
на почту написать? если что скайп мой alucid2
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675295
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675333
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675335
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

судя по моим логам - яблочники не закрывают ws, а происходит обрыв. и на сервере появляется ошибка onError.
потом следует событие на сервере onClose.
ты на onError делаешь
disconnectUser("", session);
а потом и на onClose
disconnectUser(closeReason.toString(), session);
моё мнение , что на onError этого disconnectUser("", session); делать не следует
у меня такого нет и кроме обрабатываемой ошибки обрыва все работает нормально.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675881
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,
Сама проблема не в ошибке, а в том что соединение не закрывается. То бишь если 1000 человек зайдет на сайт с яблока и просто закроет вкладку то на сервере все эти 1000 клиентов останутся в памяти. Сам понимаешь когда этих клиентов много сервер просто ляжет.

Еще бок в том что на сайте есть отображение подключенных клиентов на данный момент - счетчик. И по факту в ситуации выше счетчик будет не корректный.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675904
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopвадя,
Сама проблема не в ошибке, а в том что соединение не закрывается. То бишь если 1000 человек зайдет на сайт с яблока и просто закроет вкладку то на сервере все эти 1000 клиентов останутся в памяти. Сам понимаешь когда этих клиентов много сервер просто ляжет.

Еще бок в том что на сайте есть отображение подключенных клиентов на данный момент - счетчик. И по факту в ситуации выше счетчик будет не корректный.надо отделить мух от котлет
для этого надо что-то сделать, то что ты считаешь надо не факт что это верно - у меня без этого счетчик изменяется. проверь.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675982
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадядля этого надо что-то сделать, то что ты считаешь надо не факт что это верно - у меня без этого счетчик изменяется. проверь.переведи фразу. Он как то корректнее и аргументированнее выше тебе ответил.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39675987
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про пинг-понг уже упоминали? Простите, тред не читал.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676009
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopвадя,
Сама проблема не в ошибке, а в том что соединение не закрывается. То бишь если 1000 человек зайдет на сайт с яблока и просто закроет вкладку то на сервере все эти 1000 клиентов останутся в памяти. Сам понимаешь когда этих клиентов много сервер просто ляжет.

Еще бок в том что на сайте есть отображение подключенных клиентов на данный момент - счетчик. И по факту в ситуации выше счетчик будет не корректный.
Сервер продолжает писать в сокет и никаких ошибок не возникает?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676026
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадядля этого надо что-то сделать, то что ты считаешь надо не факт что это верно - у меня без этого счетчик изменяется. проверь.переведи фразу. Он как то корректнее и аргументированнее выше тебе ответил.дело в том , что тс очищает список сессий два раза - пр возникновении ошибки и при закрытии
при проверке моего варианта - на его яблоке, было выявлено, что при переходе со страницы на страницу срабатывает сначала событие ошибки, потом событие закрытия. причем ошибка такая, которая наблюдается при работе с клиентом на ардуино, когда на ардуино жмёшь кнопку ресет. при этом следует событие onClose с кодом 1006 - CLOSED_ABNORMALLY
само сообщение ошибки
Unexpected error [730,054] reading data from the APR/native socket [440,456,416] with wrapper [org.apache.tomcat.util.net.AprEndpoint$AprSocketWrapper@5f814793:440456416].

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

для детального исследования необходимо иметь яблочный продукт (и видимо десктоп для отладки хрома в смартфоне)

то, что появляется ошибка при обрыве - ничего страшного нет - надо просто обработать , пока я вижу её предназначение как чисто информационной/предупредительной.


Alexander A. SakПро пинг-понг уже упоминали? Простите, тред не читал.вот это вопрос интересный.
у меня ардуинка читает данные с лазерного дальномера и передаёт на сервер, сервер формирует строку для polyline для атрибута points и транслирует в браузер, который отображает "бегущую кривую" , число измеренй/отображений порядка 10 точек в секунду.
если нажать ресет - сразу сообщение об ошибке,
если вынуть шнурок сети из ардуинки - ошибки нет, график в браузере останавливается. но при втыкании шнурка обратно - все продолжается (часть данных , конечно, потеряна. А потеряна ли? судя по графику - кривая не обрывается , просто на момент разрыва передаваемые данные накапливаются и после соединения выплёвываются. на графике это отображается как "убыстрение бега" кривой )
вот тут и возникает вопрос - когда вступает в действие пинг-понг.
и соответственно когда вступают "правила" озвученные тут 21573740
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676045
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилСервер продолжает писать в сокет и никаких ошибок не возникает?у меня сервер пишет в сокет только клиенту-браузеру, при поступлении данных по ws от клиента -ардуино.
на ардуино - ws-клиент.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676051
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при длительном разрыве (больше 1минуты) сервер не показал ошибки, а при восстановлении (втыкании шнурка) передача не возобновилась.
к сожалению посмотреть что отработало в ардуине нет возможностей..
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676065
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после обрыва больше минуты - данные не передаются , но подключение по телнету и опрос состояния ws показывают , что ws активен. закрытие и открытие ws возобновляет работу системы.

таки остаётся вопрос что есть пинг-понг?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676247
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. SakПро пинг-понг уже упоминали? Простите, тред не читал.
Был вариант. Но.
Это должен делать сервер, а значит на сервере надо ставить некий таймер что ли, который будет через некоторое время делать ping-pong. Еще нюансы. Этот таймер должен быть одним на всех клиентов? или же каждому подключившемуся клиенту давать таймер?

Как лучше? Может уже есть готовые решения?
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676264
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopЭто должен делать сервер,в мануалах не сказано, что это должен делать сервер.
вообще-то таймер не нужен , он уже есть - это время жизни сессии.
у меня сессия продлевается при каждом обращении клиента по ws на небольшое время.
если время прошло клиенту отправляется ws-сообщение и он переходит на страницу авторизации. и его ws сессия удаляется. соответственно и для чата это можно использовать.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676272
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, Да проблема не в обрыве. Чистится только один юзер по Session. Сначала отрабатывает onError, до того как onClose. Если бы ошибка была бы в onClose то он бы не срабатывал, а он срабатывает. И есть посмотреть stacktrace ошибки то видно то null где-то при считывании данных. И еще алгоритм чистки построен таким образом что если он не находит юзера по сессии то ниего не делает. Да и после того сработал onClose объект сессии не null и быть не может им (кроме явного присваивания в начале метода).

Проблема в Юзерах которые хранятся в памяти и не чистятся. А не чистятся они из-за бага (или "фичи") iPhone (может быть на планшетах так же, надо будет проверить.)
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676275
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, а при чем здесь HttpSession если речь идет о сокетах? то что живет сессия это хорошо, но по факту прямого отношения к ws она не имеет. Да и отправлять ping-pong будет не сессия а ws. Когда клиент свернул или закрыл вкладку на телефоне JS перестает работать и соответственно никак не сделать ping сообщение, что бы ws ответил ему pong.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676365
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

ты , вместо, того чтоб спорить, взял бы и реально попробовал убрать очистку на событие ошибки
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676369
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяTsyklop,

ты , вместо, того чтоб спорить, взял бы и реально попробовал убрать очистку на событие ошибки
да пробовал я это - ничего не изменилось.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676377
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopда пробовал я это - ничего не изменилось.а что должно измениться? у меня ведь показало ошибку и на onClose удалило сессию
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676385
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
какая разница как сессия закрыта? нормально или с кодом 1006?
главное есть событие onClose. на нём и удаляй сессию из листа.
ошибка про null - выскакивает когда ты дважды чистишь лист
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676388
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopа при чем здесь HttpSession если речь идет о сокетах? то что живет сессия это хорошо, но по факту прямого отношения к ws она не имеетвремя сессии - это твой таймер, когда истекает время сессии это говорит о том , что либо юзер перестал работать со страницей, либо оборвалась связь (выдернут шнурок) вот и надо проверить что есть что. и послать пинг. который даст ответ что происходит.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676391
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
либо оборвалась связь и юзер об этом не знает.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676456
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя, Изначально дело не в ошибке было. А в том что юзер может закрыть или свернуть вкладку в браузере и при этом сокет не закроется (когда срабатывает ошибка все чистится как нужно). Но в том и соль что даже ошибки не происходит при закрытии или свертывании вкладки.

Что мне остается сделать так это при разрушении сессии проверять юзера.
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676463
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopА в том что юзер может закрыть или свернуть вкладку в браузере и при этом сокет не закроется (когда срабатывает ошибка все чистится как нужно).странно, но у меня все твои действия отображались, и сессии закрывались
...
Рейтинг: 0 / 0
iOS некорректно срабатывает событие onClose WebSocket
    #39676466
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopAlexander A. SakПро пинг-понг уже упоминали? Простите, тред не читал.
Был вариант. Но.
Это должен делать сервер, а значит на сервере надо ставить некий таймер что ли, который будет через некоторое время делать ping-pong. Еще нюансы. Этот таймер должен быть одним на всех клиентов? или же каждому подключившемуся клиенту давать таймер?

Как лучше? Может уже есть готовые решения?

Как лучше не знаю.
В моем велосипеде отдельная задача по таймеру. Не помню уже с каким интервалом. Секунд 15 вроде. Проходит по списку сессий и делает им PING. Понги браузер делает без нашего вмешательства.
...
Рейтинг: 0 / 0
78 сообщений из 78, показаны все 4 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / iOS некорректно срабатывает событие onClose WebSocket
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]