Я использую Play Framework 2.2.1 для обработки соединений WebSocket.
Как правило, следующая функция onClose вызывается, когда соединение либо закрывается клиентом намеренно (путем вызова функции закрытия), либо оно закрывается из-за нежелательных событий, таких как сбой клиента.
socketIn.onClose(new F.Callback0() {
public void invoke() {
// Send a Quit message
}
});
Проблема здесь в том, что иногда в случае нежелательных событий обратный вызов onClose не вызывается. С точки зрения сервера клиент выглядит так, как будто он все еще подключен. Каков наилучший способ справиться с этой проблемой? Должен ли я пинговать клиента каждую секунду, чтобы увидеть, что он в сети, или, может быть, пинг от клиента до сервера?