Continuo lendo sobre mensagens de ping / pong nos websockets para manter a conexão ativa, mas não sei ao certo o que são. É um tipo de quadro distinto? (Não vejo nenhum método em um objeto WebSocket javascript no chrome relacionado ao ping-pong). Ou é apenas um padrão de design (por exemplo, eu literalmente enviei "ping" ou qualquer outra string para o servidor e ele respondeu). O pingue-pongue está relacionado a quadros de continuação?
O motivo pelo qual pergunto é que estou usando uma estrutura python que roda atrás do Mongrel2, por isso estou pensando se há uma maneira de enviar ao Mongrel2 uma mensagem específica de ping / pong que diria para manter a conexão ativa sem a necessidade de meu aplicativo python. preocupado com isso. Análogo a ter um método HTTP separado, eu acho. E imagino que um quadro de mensagem de ping / pong dedicado possa ser mais simples (menos carga no servidor e na rede) do que a string "ping", embora isso provavelmente não importe muito.
Edição: Acabei de olhar para RFC 6455 e parece que Ping e Pong são definitivamente tipos de quadros de controle com seus próprios opcodes. Então, como envio um quadro Ping a partir do javascript no Chrome?
fonte
Respostas:
Não há API Javascript para enviar quadros de ping ou receber quadros de pong. Isso é suportado pelo seu navegador ou não. Também não há API para ativar, configurar ou detectar se o navegador suporta e está usando quadros de ping / pong. Houve discussão sobre a criação de uma API Javascript ping / pong para isso. Existe a possibilidade de que os pings possam ser configuráveis / detectáveis no futuro, mas é improvável que o Javascript possa enviar e receber diretamente quadros de ping / pong.
No entanto, se você controlar o código do cliente e do servidor, poderá adicionar facilmente o suporte a ping / pong em um nível superior. Você precisará de algum tipo de cabeçalho / metadado do tipo de mensagem na sua mensagem, se ainda não a tiver, mas isso é bastante simples. A menos que você esteja planejando enviar pings centenas de vezes por segundo ou ter milhares de clientes simultâneos, a sobrecarga será bastante mínima para você fazer isso sozinho.
fonte
O ping deve ser enviado apenas do servidor para o cliente, e o navegador deve responder o mais rápido possível com o Pong OpCode, automaticamente. Então você não precisa se preocupar com isso em um nível superior.
Embora nem todos os navegadores suportem o padrão como supõem, eles podem ter algumas diferenças na implementação desse mecanismo e pode até significar que não há funcionalidade de resposta do Pong. Mas, pessoalmente, estou usando Ping / Pong e nunca vi clientes que não implementam esse tipo de OpCode e resposta automática na implementação de baixo nível do lado do cliente.
fonte