|
|
|||||
[+ 1.0 08.10.14]
блогер
Регистрация: Mar 2010
Адрес: x = stage.stageWidth/2 y= stage.stageHeight/2
Сообщений: 293
Записей в блоге: 2
|
обрыв сокетного соединения
Решил использовать в проекте сокеты. Пока не стал использовать бинарный протокол, нашел библиотеку которая реализует стандартное апи вебсокета (com.worlize.websocket.WebSocket)
Все было в порядке, но вот сейчас вдруг стало обрываться соединение. Основная проблема в том, что даже не срабатывают события close, fail. Библиотека работает с нативными сокетами. Вполне возможно, что у сокетов события срабатывают, и что-то не так с библиотекой. На сервере событие close фиксируется. (там у меня питоновский tornado с websockethandler). Вопрос собственно такой если по каким-то причинам обрывается соединение (в моем конкретно случае я подозреваю что соединение обрывает линукс из-за недостаточного количества свободной памяти) то должен ли родной (нативный) сокет обязательно продиспачить события, или могут быть ситуации когда он может незаметить разъединения и не выкинуть никаких событий. |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
проверь сам, установи соединение и выдерни шнур.
по tcp факт обрыва соединения фиксируется когда отправляется пакет и только на той стороне, которая этот пакет отправляет. если ты открыл сокет и ничего не отправляешь то и обрыва ты не увидишь. если может возникнуть такая ситуация нужно раз в минуту (или чаще) отправлять что то серверу и клиенту, |
|
|||||
[+ 1.0 08.10.14]
блогер
Регистрация: Mar 2010
Адрес: x = stage.stageWidth/2 y= stage.stageHeight/2
Сообщений: 293
Записей в блоге: 2
|
стал каждые пять секунд проверять соединение тестовым сообщением и разрывы прекратились, но теперь не знаю как эту ошибку снова ловить, нужно написать обработку разрыва соединения. Если я на сервере буду в рандомное время обрывать соединение, это будет идентично естественному разрыву? Просто если закрыть соединение на сервере, то клиент обрабатывает событие onclose и меняет статус сокета, поэтому вробе бы это не совсем одно и то же.
|
|
|||||
Цитата:
Что-то мне подсказывает, что дело все в банальном таймауте соединения. Нет смысла держать соединение постоянно, если сокету ничего не отправляется. Так что для начала надо посмотреть настройки этих библиотек. Наверняка там есть таймаут по умолчанию
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
[+ 1.0 08.10.14]
блогер
Регистрация: Mar 2010
Адрес: x = stage.stageWidth/2 y= stage.stageHeight/2
Сообщений: 293
Записей в блоге: 2
|
Там достаточно короткие пятиминутные матчи, предполагается что игрок будет тратить примерно секунд по десять на обдумывание хода, так что наверное лучше держать постоянное соединение.
|
|
|||||
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
Часовой пояс GMT +4, время: 02:45. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|