Socket.io-client: Le ping-pong pour la latence ne semble plus fonctionner

Créé le 10 nov. 2020  ·  6Commentaires  ·  Source: socketio/socket.io-client

Tu veux:

  • [x] signaler un bogue
  • [ ] demander une fonctionnalité

Comportement actuel

Que se passe-t-il réellement ?

L'événement Pong sur le client n'est pas déclenché/déclenché, même avec pingInterval activé/défini sur le serveur

Étapes à reproduire (si le comportement actuel est un bug)

https://github.com/Tiboonn/socket.io-fiddle
Dans le fork ci-dessus, les versions de socket.io et socket.io-client sont 3.0.0 sur lesquelles l'événement 'pong' ne fonctionne pas.
Si vous modifiez les deux versions du packege.json en 2.3.0 et réinstallez les packages, l'événement 'pong' fonctionne

Comportement attendu

Qu'est-ce qui est attendu ?

Je m'attends à ce que la latence soit de ms avec le bloc de code suivant côté client

socket.on('pong', function (ms) {
    console.log(ms)
})

Installer

  • Système d'exploitation : Ubuntu 20.04
  • navigateur : Firefox/Chrome (testé plusieurs fois)
  • version socket.io : 3.0.0

Autres informations (par exemple, stacktraces, problèmes connexes, suggestions de résolution)

Needs documentation

Commentaire le plus utile

Salut! Vous avez tout à fait raison, cela devrait être inclus dans le guide de migration.

Vous devriez pouvoir reproduire le comportement avec :

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

Tous les 6 commentaires

Après avoir lu la documentation de la v3, j'ai remarqué que l'événement pong avait été supprimé, mais en cas de rupture des modifications, il n'est pas mentionné.

Existe-t-il une solution de contournement pour le moment ?

Cela est également mentionné dans le commit suivant :

https://github.com/socketio/socket.io-client/commit/be8c3141bdbbdfa59c4d0ca4b3149236e200878f

Il semble que cette fonctionnalité ait été supprimée à cause de engine.io...

@hadimostafapour Bonne trouvaille !!! :)
Je pense que je vais prendre le code du commit que vous avez mentionné et l'implémenter moi-même :D

Salut! Vous avez tout à fait raison, cela devrait être inclus dans le guide de migration.

Vous devriez pouvoir reproduire le comportement avec :

// 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 Merci pour le bout de code !!

Ajouté ici : https://socket.io/docs/v3/migrating-from-2-x-to-3-0/#No -more-%E2%80%9Cpong%E2%80%9D-event-for -récupération-latence

Merci pour le retour :+1:

Cette page vous a été utile?
0 / 5 - 0 notes