Desconexões regulares do soquete da Web no OS X

1

Temos um SPA que executa o lado do SockJs cliente e servidor (NodeJs). Para estações de trabalho Windows, não temos problemas em manter conexões de soquete da web para servidores implantados no Windows Azure. Mas para alguns colegas que usam estações de trabalho do Mac OS X, eles estão experimentando nas últimas semanas desconexões aleatórias freqüentes de sockets da Web. Acontece tanto no Chrome quanto no Firefox, então parece estar em um nível mais baixo do sistema operacional.

Tanto quanto eles sabem, não houve atualizações para o OS X que possam afetar a pilha da rede. Não parece encontrar nenhum problema no SockJs também. Alguma dica de solução de problemas para o OS X?

    
por icelava 12.12.2012 / 02:23

1 resposta

2

Então, consegui emprestar um dos Macbooks do meu colega e instalei o Wireshark nele.

Monitorando o tráfego HTTP, vejo as trocas de upgrade do websocket esperadas ocorrendo, e, em seguida, , percebo que os pacotes de redefinição RST do nível TCP foram enviados do servidor. Depois disso, a estação de trabalho cliente deve iniciar uma nova conexão HTTP e atualizar o websocket novamente. Que eventualmente acaba em outro RST do servidor.

Ao tentar comparar a situação na minha estação de trabalho Windows, descobri que a pilha de rede automaticamente distribui pacotes ACK de manutenção a cada 3-5 segundos para o servidor . Parece que a pilha de rede do Mac OS não percebe que a conexão HTTP existente foi atualizada para o websocket e, portanto, não se preocupou em fornecer os pacotes ACK necessários para informar ao servidor que ainda está ativo.

Para resolver isso no Mac, escrevemos nosso cliente para enviar periodicamente dados "ping" para persistir a conexão com o websocket.

    
por 12.12.2012 / 13:36