Apa yang sebenarnya terjadi?
Acara Pong pada klien tidak diaktifkan/dipicu, bahkan dengan pingInterval diaktifkan/diatur di server
https://github.com/Tiboonn/socket.io-fiddle
Di garpu di atas versi socket.io dan socket.io-client adalah 3.0.0 yang acara 'pong' tidak berfungsi.
Jika Anda mengubah kedua versi di package.json ke 2.3.0 dan menginstal ulang paket, acara 'pong' berfungsi
Apa yang diharapkan?
Saya mengharapkan untuk mendapatkan latensi ms dengan blok kode berikut di sisi klien
socket.on('pong', function (ms) {
console.log(ms)
})
Setelah membaca dokumentasi v3 saya perhatikan acara pong
telah dihapus tetapi dalam melanggar perubahan itu tidak disebutkan.
Apakah ada solusi saat ini?
Juga ini disebutkan dalam komit berikut:
https://github.com/socketio/socket.io-client/commit/be8c3141bdbbdfa59c4d0ca4b3149236e200878f
Sepertinya fitur ini telah dihapus karena engine.io...
@hadimostafour Selamat menemukan!!! :)
Saya pikir saya akan mengambil kode dari komit yang Anda sebutkan dan mengimplementasikannya sendiri :D
Hai! Anda benar sekali, ini harus disertakan dalam panduan migrasi.
Anda harus dapat mereproduksi perilaku dengan:
// 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 Terima kasih atas potongan kodenya!!
Ditambahkan di sini: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/#No -more-%E2%80%9Cpong%E2%80%9D-event-for -mengambil-latensi
Terima kasih atas tanggapannya :+1:
Komentar yang paling membantu
Hai! Anda benar sekali, ini harus disertakan dalam panduan migrasi.
Anda harus dapat mereproduksi perilaku dengan: