O IO do soquete detecta quando o cliente perdeu a conexão

9

Eu preciso ser capaz de detectar quando um usuário perdeu a conexão com o soquete, não parece que socket.on("disconnect") está sendo chamado quando eu apenas fecho meu laptop, então ele não executa a chamada ajax que precisa para executar a fim de atualizar o banco de dados para marcar o usuário como offline. Como eu poderia verificar se a conexão foi fechada ou o que for?

    
por Dylan Cross 07.02.2012 в 20:38
fonte

2 respostas

4

Como mencionado aqui link , o Socket.IO tem sua própria implementação de heartbeat. Mas os padrões são um intervalo de 25s e um limite de 60s para uma conexão perdida.

Então, meu conselho: defina os padrões como você espera nos testes. Caso contrário, você pode perder o limite.

Exemplo:

socket.set("heartbeat timeout", 10);
socket.set("heartbeat interval", 5);
    
por sja 24.07.2013 / 13:30
fonte
2

nos deparamos com isso também e, como mencionado acima, usamos nosso próprio cronômetro de pulsação.

Por exemplo, o servidor irá emitir um heartbeat a cada 5 segundos (nós enviamos o tempo do servidor). O cliente tem um tempo limite de 11 segundos, então tem 2 chances de capturar o batimento cardíaco. Se receber a pulsação, zeramos o timer. Se perdermos os dois heartbeats, a função timeout é executada e você faz o que quiser lá.

Bastante simples.

    
por DomA 12.02.2013 / 16:14
fonte