O que realmente está acontecendo?
O evento Pong no cliente não é disparado / disparado, mesmo com pingInterval ativado / definido no servidor
https://github.com/Tiboonn/socket.io-fiddle
Na bifurcação acima, a versão de socket.io e socket.io-client são 3.0.0, nos quais o evento 'pong' não funciona.
Se você alterar as duas versões do packege.json para 2.3.0 e reinstalar os pacotes, o evento 'pong' está funcionando
O que é esperado?
Espero obter a latência em ms com o seguinte bloco de código no lado do cliente
socket.on('pong', function (ms) {
console.log(ms)
})
Depois de ler a documentação da v3, percebi que o evento pong
foi removido, mas nas mudanças significativas não foi mencionado.
Existe alguma solução alternativa no momento?
Também mencionado no seguinte compromisso:
https://github.com/socketio/socket.io-client/commit/be8c3141bdbbdfa59c4d0ca4b3149236e200878f
Parece que esse recurso foi removido devido engine.io ...
@hadimostafapour Good find !!! :)
Acho que vou pegar o código do commit que você mencionou e implementá-lo sozinho: D
Oi! Você está absolutamente certo, isso deve ser incluído no guia de migração.
Você deve ser capaz de reproduzir o comportamento com:
// server-side
io.on("connection", (socket) => {
socket.on("ping", (cb) => {
if (typeof cb === "function")
cb();
});
});
// client-side
setInterval(() => {
const start = Date.now();
socket.volatile.emit("ping", () => {
const latency = Date.now() - start;
// ...
});
}, 5000);
@darrachequesne Obrigado pelo trecho de código !!
Adicionado aqui: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/#No -more-% E2% 80% 9Cpong% E2% 80% 9D-event-for -retrieving-latency
Obrigado pelo feedback: +1:
Comentários muito úteis
Oi! Você está absolutamente certo, isso deve ser incluído no guia de migração.
Você deve ser capaz de reproduzir o comportamento com: