@VladimirDronik

Почему отваливаются вебсокеты workerman с приложением на ionic. Кто виноват клиент или сервер?

Всем привет.

Есть вебсокеты на workerman к ним подключается приложение на ionic из под андроида например.
Когда сворачиваем приложение - через некоторое время рвется соединение с сервером. В основном это происходит при длительном простое приложения в свернутом режиме, либо при временном отключении связи на телефоне к примеру.

Причем соединение рвется странно, сервер думает по-прежнему, что клиент подключен, клиент тоже не видит, что сокет закрылся, но сообщения по сокету не ходят. Сделали функцию ping для приложения, если нет отклика - оно переподключается к серверу. На сервере при этом счетчик активных соединений растет. Таким образом получается, что сокеты закрываются, но приложение и сервер этого не видят. Кто виновен в данной ситуации клиент или сервер? Куда копать или как можно потестить?
  • Вопрос задан
  • 298 просмотров
Пригласить эксперта
Ответы на вопрос 1
AlexMcArrow
@AlexMcArrow
Люблю РНР, да я такой!
Сталкивался с таким поведением и на iOS.
Ваше решение с пингом верно в данном случае. Можно дополнить двунаправленным. По сути отмечать на стороне сервера когда была последняя активность клиента (ведь если клиент постоянно шлет ПИНГ, то активность должна быть), если клиент пропустил 2-3 тайма для пинга - отрубать сокет (тут можно нежно: послать пинг от сервера и если нет ответа рубить; или жестко: сразу рубить)
Так что поле для фантазий.)
ЗЫ. когда вы включите мобильную связь и пойдете по улице у вас еще IP меняться начнет и так же разрывы сокет-соединения будут.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы