Socket.io-client: Ping-pong untuk latensi sepertinya tidak berfungsi lagi

Dibuat pada 10 Nov 2020  ·  6Komentar  ·  Sumber: socketio/socket.io-client

Yang kamu ingin:

  • [x] laporkan bug
  • [ ] meminta fitur

Perilaku saat ini

Apa yang sebenarnya terjadi?

Acara Pong pada klien tidak diaktifkan/dipicu, bahkan dengan pingInterval diaktifkan/diatur di server

Langkah-langkah untuk mereproduksi (jika perilaku saat ini adalah bug)

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

Perilaku yang diharapkan

Apa yang diharapkan?

Saya mengharapkan untuk mendapatkan latensi ms dengan blok kode berikut di sisi klien

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

Mempersiapkan

  • OS: Ubuntu 20.04
  • browser: Firefox/Chrome (beberapa diuji)
  • versi socket.io: 3.0.0

Informasi lain (mis. stacktrace, masalah terkait, saran cara memperbaikinya)

Needs documentation

Komentar yang paling membantu

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

Semua 6 komentar

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:

Apakah halaman ini membantu?
0 / 5 - 0 peringkat