|
|
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Имеется WebSocket Server Java. Есть два клиента: iOS и Android. Как обстоит дело на Android (Chrome): Клиент подключается к сокету, срабатывает событие onOpen, на сообщения onMessage. При закрытии вкладки корректно срабатывает сообщение onClose. Как обстоит дело на iOS (Chrome): Клиент подключается к сокету, срабатывает событие onOpen, на сообщения onMessage. И вот тут начинается веселье. Если я закрою вкладку браузера, то события onClose не будет (хотя по логике вещей должно быть). Далее. Я создаю новую вкладку в браузере. Ввожу первый символ url адреса и я тут же наблюдаю onClose который вытекает в onError ибо что-то уже null. Ну и "переподключение" к сокету. Вопрос. как сиё чудо Apple починить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 17:52 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopВопрос. как сиё чудо Apple починить? Никак, не чинить, это нормальное поведения для веба. Попробуй клиенту на Android просто вырубить интернет - например, выдерни роутер w-fi из розетки - получишь то же самое поведение. Пиши обработчик на событие onClose с учетом этой специфики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 18:23 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopИмеется WebSocket Server Java.что за сервер? TsyklopКлиент подключается к сокету, срабатывает событие onOpen, на сообщения onMessageкакая-то лажа. onOpen срабатывает на подключение, а не на onMessage. что-то у тебя с ws не то.... https://learn.javascript.ru/websockets ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 22:53 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Руслан ДамировичНикак, не чинить, это нормальное поведения для веба. Попробуй клиенту на Android просто вырубить интернет - например, выдерни роутер w-fi из розетки - получишь то же самое поведение. Пиши обработчик на событие onClose с учетом этой специфики. При аварийных выключениях согласен - такое везде. Но я сейчас за мою ситуацию. И это не нормально. Почему на Android все хорошо, а на Apple лажа? кто криворукий? Сомневаюсь что я ибо я пользуюсь тем что готово давно, да и не только я использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 23:55 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадячто за сервер? Java EE Tomcat 9. вадякакая-то лажа. onOpen срабатывает на подключение, а не на onMessage. что-то у тебя с ws не то.... https://learn.javascript.ru/websockets onOpen срабатывает на подключение, а onMessage когда приходят сообщения от сервера. Было бы не то с ws или не тот ws не работало. Ибо это встроено в браузер и изменить я не могу (может и можно но я хз как да и не особо нужно). Использую тот же ws что и по ссылке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 23:58 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, нпдо аккуратнее с формулировкаии в других браузерах, кроме хрома, на яблоках так же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 01:27 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяTsyklop, нпдо аккуратнее с формулировкаии в других браузерах, кроме хрома, на яблоках так же? в других не тестил, но мне кажется что так же будет. apple все таки. у них свои правила для всех и сафари не исключение. Но я попробую. Но если уж в самом хроме такая беда то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 01:30 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, где ты наблюдаешь ошибку? в хроме на яблоке? на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 01:30 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, покажи полный код ws. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 01:35 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, onClose это сообщение о том , что другая сторона закрыла ws. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 01:38 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяTsyklop, где ты наблюдаешь ошибку? в хроме на яблоке? на сервере? наблюдаю срабатывание события onError на сервере ну и эксепшн. в хроме на телефоне я ошибку никак не могу увидеть ибо там нет консоли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 01:45 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяTsyklop, покажи полный код ws. Обычный ServerEndpoint из javax.websocket-api. Тут больше дело не в сервере, а в клиенте на телефоне который инициализирует разрыв соединения. Ведь на андроиде то все нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 01:46 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяTsyklop, onClose это сообщение о том , что другая сторона закрыла ws. Да. У меня логика такая что при onClose я удаляю юзера из списка подключенных пользователей к ws. иначе они будут накапливаться и накапливаться что приведет к утечке памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 01:48 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopнаблюдаю срабатывание события onError на сервере ну и эксепшнэто не показатель ошибки , это серверная часть. должно быть только onClose. Tsyklopв хроме на телефоне я ошибку никак не могу увидеть ибо там нет консоли.откой для себя десктопный хром и его возможности - можно увидеть всю подноготную работы хрома на телефоне TsyklopДа. У меня логика такая что при onClose я удаляю юзера из списка подключенных пользователей к ws. иначе они будут накапливаться и накапливаться что приведет к утечке памяти.покажи код onClose. сделай пошаговую отладку в onClose. TsyklopЕсли я закрою вкладку браузера, то события onClose не будекак ты это проверил? то, что у тебя работает с андроид не говорит о том , что нет события onClose для яблока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 06:47 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopВвожу первый символ url адреса и я тут же наблюдаю onClose который вытекает в onError ибо что-то уже null. TsyklopУ меня логика такая что при onClose я удаляю юзера из списка подключенных пользователей к wsскорее всего у тебя из списка уже удалён юзер, и ты его повторно удаляешь - вот и ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 06:51 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, я не дурачок и пишу логи при каждом событии ws на сервере. И когда происходит onClose я это отчетливо вижу. Вот держи: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:13 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяоткой для себя десктопный хром и его возможности - можно увидеть всю подноготную работы хрома на телефоне с Андроидом так делал, да. Но для iOS нужен макбук или macOs - у меня ни того, ни того нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:15 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадякак ты это проверил? то, что у тебя работает с андроид не говорит о том , что нет события onClose для яблока. Вижу логи сервера. У меня сервер всегда пишет логи и по ним видно то что я описал в топике ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:16 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяэто не показатель ошибки , это серверная часть. должно быть только onClose. Ну так срабатывает onClose когда ввожу первый символ и там что-то уже null и срабатывает onError. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:16 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, что пишет LOGGER.info("ENDPOINT ONCLOSE - "+closeReason.getCloseCode()); и LOGGER.error("ENDPOINT ERROR", ex.getMessage()); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 11:11 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяLOGGER.info("ENDPOINT ONCLOSE - "+closeReason.getCloseCode()); Код: java 1. вадяLOGGER.error("ENDPOINT ERROR", ex.getMessage()); Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 11:38 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, еще вот такое: CloseReason: code [1003], reason [] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 11:43 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
http://qaru.site/questions/151831/getting-the-reason-why-websockets-closed-with-close-code-1006 Tsyklop CloseReason: code [1003], reason [] Код: plaintext 1. 2. 3. subprotocol используешь? я так делаю Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 11:59 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, попробуй на событие Код: javascript 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:12 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, Нет. Пользую wss соединение. binaryType не задан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:12 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopbinaryType не задан.попробуй задать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:12 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
ws/wss не влияет (не должен влиять) версия хрома на яблоке из последних? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:15 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, в iphone onbeforeunload считается устаревшим. Вместо него pagehide, но оно не работает на закрытие вкладки. Изменил у себя binaryType='arraybuffer' - ничего не изменилось. Apple как всегда молодцы, умеют жопу сделать. Вот что заметил. Открыл я вкладку - сокет подключился, все ок. Закрыл вкладку - ноль реакции. Далее я побробовал полностью закрыть хром - вылезла ошибка которую я скидывал ну и код 1003. Так же само когда ввожу первый символ в url-е. Я хз че это за поведение такое и зачем его сделали. Проверил сафари - все так же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:22 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяws/wss не влияет (не должен влиять) версия хрома на яблоке из последних? iPhone наверно 6 или 7. Версия хрома 67.033... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:23 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, Переходи на REST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:28 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Petro123Tsyklop, Переходи на REST Не могу. Чат на REST писать не ахти как-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:33 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, Чат оно конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:39 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopв iphone onbeforeunload считается устаревшим.считается - не значит не работат проверить не помешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:42 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopв iphone onbeforeunload считается устаревшим https://caniuse.com/#search=onbeforeunload ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:47 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяTsyklopв iphone onbeforeunload считается устаревшим https://caniuse.com/#search=onbeforeunload До проверил я уже оба этил события - не работают. В доках apple написано что именно у них он устаревший. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:49 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopДо проверил я уже оба этил события - не работают. В доках apple написано что именно у них он устаревший.т.е. хром для яблока пишет само яблоко? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:51 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopДо проверил я уже оба этил события - не работают. В доках apple написано что именно у них он устаревший.это они в сафари могут не использовать, но это хром и он хозяин. как яблоко может запретить использовать что-то из стандартного набора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 13:11 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, я так думаю что хром под iOS писался с учетом всех требований apple, иначе б его не пропустили. Как тогда объяснить что поведение что в хроме что в сафари одно и тоже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 13:17 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяэто они в сафари могут не использовать, но это хром и он хозяин. как яблоко может запретить использовать что-то из стандартного набора В данном случае хозяин apple с его идиотскими правилами и условиями. Хром сам себе хозяин на Android. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 13:18 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, как ты определил? что не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 13:19 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, написал код и проверил в работе. pagehide работает, но не на закрытие вкладки. Он срабатывал когда я перезагружал страницу допустим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 13:21 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, Может кинуть issue в apple? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 13:22 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopвадя, Может кинуть issue в apple?надо убедиться , что у тебя нет ошибок, то, что в андроид работает - не гарантия. может андроид более лоялен к ошибкам :) onbeforeunload проверил? то что устаревшая, не значит, что не должна работать. не для дальнейшего использования. поймать факт что вызывает ошибку. для проверки можно кнопкой закрыть ws, и открыть новую вкладку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:02 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopвадя, Может кинуть issue в apple?я могу проверить на своём проекте, если свяжемся по скайп или ещё как. у меня тоже ws из tomcat , правда из 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:04 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
ЗЫ у меня нет яблочных продуктов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:05 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадянадо убедиться , что у тебя нет ошибок, то, что в андроид работает - не гарантия. может андроид более лоялен к ошибкам :) onbeforeunload проверил? то что устаревшая, не значит, что не должна работать. не для дальнейшего использования. поймать факт что вызывает ошибку. для проверки можно кнопкой закрыть ws, и открыть новую вкладку. onbeforeunload является устаревшим именно у самого apple, а в мире очень даже работает и актуален (как всегда apple через одно место делает все) Ну при pagehide, когда перезагружал страницу, ws закрывался корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:06 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, Беру начальника телефон. Ибо у самого адекватный Android. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:06 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяTsyklopвадя, Может кинуть issue в apple?я могу проверить на своём проекте, если свяжемся по скайп или ещё как. у меня тоже ws из tomcat , правда из 8. Можешь просто дать урл сервера. ну и там по логам глянешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:07 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopМожешь просто дать урл сервера. ну и там по логам глянешь.в открытую не хочется, да и там вход по логину/паролю . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:11 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopвадя, Беру начальника телефон. Ибо у самого адекватный Android.а это проблема :) я могу проверить на тестовом проекте, т.е. надо чтоб он работал, чтоб .... но надо как-то это сделать. мне интересно не наступать на эти грабли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:14 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, надо думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:21 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopвадя, надо думать.мыло в профиле... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:26 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадямыло в профиле... на почту написать? если что скайп мой alucid2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:28 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 22:28 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 04:05 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, судя по моим логам - яблочники не закрывают ws, а происходит обрыв. и на сервере появляется ошибка onError. потом следует событие на сервере onClose. ты на onError делаешь disconnectUser("", session); а потом и на onClose disconnectUser(closeReason.toString(), session); моё мнение , что на onError этого disconnectUser("", session); делать не следует у меня такого нет и кроме обрабатываемой ошибки обрыва все работает нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 04:41 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, Сама проблема не в ошибке, а в том что соединение не закрывается. То бишь если 1000 человек зайдет на сайт с яблока и просто закроет вкладку то на сервере все эти 1000 клиентов останутся в памяти. Сам понимаешь когда этих клиентов много сервер просто ляжет. Еще бок в том что на сайте есть отображение подключенных клиентов на данный момент - счетчик. И по факту в ситуации выше счетчик будет не корректный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 20:23 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopвадя, Сама проблема не в ошибке, а в том что соединение не закрывается. То бишь если 1000 человек зайдет на сайт с яблока и просто закроет вкладку то на сервере все эти 1000 клиентов останутся в памяти. Сам понимаешь когда этих клиентов много сервер просто ляжет. Еще бок в том что на сайте есть отображение подключенных клиентов на данный момент - счетчик. И по факту в ситуации выше счетчик будет не корректный.надо отделить мух от котлет для этого надо что-то сделать, то что ты считаешь надо не факт что это верно - у меня без этого счетчик изменяется. проверь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 21:46 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадядля этого надо что-то сделать, то что ты считаешь надо не факт что это верно - у меня без этого счетчик изменяется. проверь.переведи фразу. Он как то корректнее и аргументированнее выше тебе ответил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 07:38 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Про пинг-понг уже упоминали? Простите, тред не читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 07:48 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopвадя, Сама проблема не в ошибке, а в том что соединение не закрывается. То бишь если 1000 человек зайдет на сайт с яблока и просто закроет вкладку то на сервере все эти 1000 клиентов останутся в памяти. Сам понимаешь когда этих клиентов много сервер просто ляжет. Еще бок в том что на сайте есть отображение подключенных клиентов на данный момент - счетчик. И по факту в ситуации выше счетчик будет не корректный. Сервер продолжает писать в сокет и никаких ошибок не возникает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 08:52 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 09:19 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
ИзопропилСервер продолжает писать в сокет и никаких ошибок не возникает?у меня сервер пишет в сокет только клиенту-браузеру, при поступлении данных по ws от клиента -ардуино. на ардуино - ws-клиент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 09:43 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
при длительном разрыве (больше 1минуты) сервер не показал ошибки, а при восстановлении (втыкании шнурка) передача не возобновилась. к сожалению посмотреть что отработало в ардуине нет возможностей.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 09:50 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
после обрыва больше минуты - данные не передаются , но подключение по телнету и опрос состояния ws показывают , что ws активен. закрытие и открытие ws возобновляет работу системы. таки остаётся вопрос что есть пинг-понг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 10:09 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Alexander A. SakПро пинг-понг уже упоминали? Простите, тред не читал. Был вариант. Но. Это должен делать сервер, а значит на сервере надо ставить некий таймер что ли, который будет через некоторое время делать ping-pong. Еще нюансы. Этот таймер должен быть одним на всех клиентов? или же каждому подключившемуся клиенту давать таймер? Как лучше? Может уже есть готовые решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 15:10 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopЭто должен делать сервер,в мануалах не сказано, что это должен делать сервер. вообще-то таймер не нужен , он уже есть - это время жизни сессии. у меня сессия продлевается при каждом обращении клиента по ws на небольшое время. если время прошло клиенту отправляется ws-сообщение и он переходит на страницу авторизации. и его ws сессия удаляется. соответственно и для чата это можно использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 15:30 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, Да проблема не в обрыве. Чистится только один юзер по Session. Сначала отрабатывает onError, до того как onClose. Если бы ошибка была бы в onClose то он бы не срабатывал, а он срабатывает. И есть посмотреть stacktrace ошибки то видно то null где-то при считывании данных. И еще алгоритм чистки построен таким образом что если он не находит юзера по сессии то ниего не делает. Да и после того сработал onClose объект сессии не null и быть не может им (кроме явного присваивания в начале метода). Проблема в Юзерах которые хранятся в памяти и не чистятся. А не чистятся они из-за бага (или "фичи") iPhone (может быть на планшетах так же, надо будет проверить.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 15:36 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, а при чем здесь HttpSession если речь идет о сокетах? то что живет сессия это хорошо, но по факту прямого отношения к ws она не имеет. Да и отправлять ping-pong будет не сессия а ws. Когда клиент свернул или закрыл вкладку на телефоне JS перестает работать и соответственно никак не сделать ping сообщение, что бы ws ответил ему pong. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 15:38 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, ты , вместо, того чтоб спорить, взял бы и реально попробовал убрать очистку на событие ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 17:15 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадяTsyklop, ты , вместо, того чтоб спорить, взял бы и реально попробовал убрать очистку на событие ошибки да пробовал я это - ничего не изменилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 17:16 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopда пробовал я это - ничего не изменилось.а что должно измениться? у меня ведь показало ошибку и на onClose удалило сессию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 17:23 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklop, какая разница как сессия закрыта? нормально или с кодом 1006? главное есть событие onClose. на нём и удаляй сессию из листа. ошибка про null - выскакивает когда ты дважды чистишь лист ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 17:31 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
Tsyklopа при чем здесь HttpSession если речь идет о сокетах? то что живет сессия это хорошо, но по факту прямого отношения к ws она не имеетвремя сессии - это твой таймер, когда истекает время сессии это говорит о том , что либо юзер перестал работать со страницей, либо оборвалась связь (выдернут шнурок) вот и надо проверить что есть что. и послать пинг. который даст ответ что происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 17:37 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
либо оборвалась связь и юзер об этом не знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 17:37 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
вадя, Изначально дело не в ошибке было. А в том что юзер может закрыть или свернуть вкладку в браузере и при этом сокет не закроется (когда срабатывает ошибка все чистится как нужно). Но в том и соль что даже ошибки не происходит при закрытии или свертывании вкладки. Что мне остается сделать так это при разрушении сессии проверять юзера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 19:14 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopА в том что юзер может закрыть или свернуть вкладку в браузере и при этом сокет не закроется (когда срабатывает ошибка все чистится как нужно).странно, но у меня все твои действия отображались, и сессии закрывались ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 19:51 |
|
||
|
iOS некорректно срабатывает событие onClose WebSocket
|
|||
|---|---|---|---|
|
#18+
TsyklopAlexander A. SakПро пинг-понг уже упоминали? Простите, тред не читал. Был вариант. Но. Это должен делать сервер, а значит на сервере надо ставить некий таймер что ли, который будет через некоторое время делать ping-pong. Еще нюансы. Этот таймер должен быть одним на всех клиентов? или же каждому подключившемуся клиенту давать таймер? Как лучше? Может уже есть готовые решения? Как лучше не знаю. В моем велосипеде отдельная задача по таймеру. Не помню уже с каким интервалом. Секунд 15 вроде. Проходит по списку сессий и делает им PING. Понги браузер делает без нашего вмешательства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 19:55 |
|
||
|
|

start [/forum/search_topic.php?author=yu_&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 411ms |
| total: | 719ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...