Socket.io-client: Ping-Pong für Latenz scheint nicht mehr zu funktionieren

Erstellt am 10. Nov. 2020  ·  6Kommentare  ·  Quelle: socketio/socket.io-client

Du möchtest:

  • [x] einen Fehler melden
  • [ ] Feature anfordern

Aktuelles Verhalten

Was passiert eigentlich?

Pong-Ereignis auf dem Client wird nicht ausgelöst/ausgelöst, selbst wenn pingInterval auf dem Server aktiviert/gesetzt ist

Schritte zum Reproduzieren (wenn das aktuelle Verhalten ein Fehler ist)

https://github.com/Tiboonn/socket.io-fiddle
In der Abzweigung oben sind die Versionen von socket.io und socket.io-client 3.0.0, auf denen das 'pong'-Ereignis nicht funktioniert.
Wenn Sie beide Versionen in der packagege.json auf 2.3.0 ändern und die Pakete neu installieren, funktioniert das 'pong'-Ereignis

Erwartetes Verhalten

Was wird erwartet?

Ich erwarte, dass die Latenzzeit ms mit dem folgenden Codeblock auf der Clientseite beträgt

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

Aufstellen

  • Betriebssystem: Ubuntu 20.04
  • Browser: Firefox/Chrome (mehrere getestet)
  • socket.io-Version: 3.0.0

Sonstige Informationen (z. B. Stacktraces, verwandte Probleme, Vorschläge zur Behebung)

Needs documentation

Hilfreichster Kommentar

Hi! Sie haben vollkommen recht, dies sollte im Migrationsleitfaden enthalten sein.

Sie sollten das Verhalten reproduzieren können mit:

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

Alle 6 Kommentare

Nachdem ich die Dokumentation von v3 gelesen hatte, bemerkte ich, dass das Ereignis pong entfernt wurde, aber in Breaking Changes wird es nicht erwähnt.

Gibt es im Moment einen Workaround?

Auch dies wird in folgendem Commit erwähnt:

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

Scheint, dass diese Funktion aufgrund von engine.io entfernt wurde...

@hadimostafapour Guter Fund!!! :)
Ich denke, ich werde den Code aus dem von dir erwähnten Commit nehmen und selbst implementieren :D

Hi! Sie haben vollkommen recht, dies sollte im Migrationsleitfaden enthalten sein.

Sie sollten das Verhalten reproduzieren können mit:

// 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 Danke für den

Hier hinzugefügt: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/#No -more-%E2%80%9Cpong%E2%80%9D-event-for -Abruf-Latenz

Danke für die Rückmeldung :+1:

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen