powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / iOS некорректно срабатывает событие onClose WebSocket
25 сообщений из 78, страница 1 из 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
25 сообщений из 78, страница 1 из 4
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / iOS некорректно срабатывает событие onClose WebSocket
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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