2016-10-14 3 views
0

Я использую PHP WebSockets.Тайм-аут WebSocket в Firefox (и Chrome)

Я установил длинный тайм-аут на сервере:

protected function connected ($user) { 
    socket_set_option($user->socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>7200, 'usec'=>0)); 
    socket_set_option($user->socket, SOL_SOCKET, SO_SNDTIMEO, array('sec'=>7200, 'usec'=>0)); 
} 

Тем не менее Firefox разъединяет примерно через 5 минут. Я сильно подозреваю, что это потому, что тайм-аут в Firefox.

Каково точное значение таймаута? Как мой JaveScript может получить к нему доступ? Могу я его изменить?

То же самое касается Chrome.

ответ

1

Что вы устанавливаете с помощью SO_RCVTIMEO & SO_SNDTIMEO является таймаутом для сокета send и recv. Если в течение установленного времени и recv не выполняют свои действия, возвращается ошибка. Он не связан с отключением, которое вы видите

Отключение, которое вы видите, вероятно, связано с отсутствием соединения TCP. Либо клиент, либо сервер настраивает тайм-аут в режиме ожидания на 5 минут. Может быть, вам следует настроить сообщения keep-alive на уровне приложения, чтобы сохранить соединение TCP неповрежденным.

Смежные вопросы