Was passiert eigentlich?
Pong-Ereignis auf dem Client wird nicht ausgelöst/ausgelöst, selbst wenn pingInterval auf dem Server aktiviert/gesetzt 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
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)
})
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:
Hilfreichster Kommentar
Hi! Sie haben vollkommen recht, dies sollte im Migrationsleitfaden enthalten sein.
Sie sollten das Verhalten reproduzieren können mit: