Socket.io-client: Ping-pong para latência parece não funcionar mais

Criado em 10 nov. 2020  ·  6Comentários  ·  Fonte: socketio/socket.io-client

Você quer:

  • [x] relatar um bug
  • [] solicitar um recurso

Comportamento atual

O que realmente está acontecendo?

O evento Pong no cliente não é disparado / disparado, mesmo com pingInterval ativado / definido no servidor

Etapas para reproduzir (se o comportamento atual for um bug)

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

Comportamento esperado

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)
})

Configurar

  • SO: Ubuntu 20.04
  • navegador: Firefox / Chrome (vários testados)
  • versão socket.io: 3.0.0

Outras informações (por exemplo, rastreamentos de pilha, problemas relacionados, sugestões de como corrigir)

Needs documentation

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:

// 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);

Todos 6 comentários

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:

Esta página foi útil?
0 / 5 - 0 avaliações