Socket.io-client: pemutusan soket v3 tampaknya menutup koneksi yang mendasarinya.

Dibuat pada 16 Nov 2020  ·  4Komentar  ·  Sumber: socketio/socket.io-client

Yang kamu ingin:

  • [x] laporkan bug
  • [ ] meminta fitur

Perilaku saat ini

Setelah saya memutakhirkan ke v3, ketika saya memanggil socket.disconnect() di salah satu sisi klien atau server, tampaknya koneksi yang mendasari Manajer juga ditutup - semua soket lain yang menggunakan manajer yang sama / koneksi yang mendasarinya juga terputus.

Saya tidak tahu ke mana harus mengajukan masalah ini. Mungkin sudah root di engine.io v4?

Inilah perbedaan proyek saya selama pemutakhiran . Saya minta maaf bahwa itu berisi beberapa perubahan yang tidak terkait juga. Hal utama yang ingin saya soroti adalah bahwa saya tidak membuat perubahan apa pun pada cara saya mengatur dan mengelola koneksi (Anda dapat cmd+F untuk "memutuskan", "menutup", "io.socket").

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

Silakan lihat jsfiddle ini .

Perilaku yang diharapkan

Perilaku v2 adalah bahwa memanggil socket.close() di sisi klien dan di sisi server hanya boleh menutup soket itu ketika seorang manajer memiliki beberapa ruang nama - itu tidak boleh menutup setiap soket multipleks di bawah palungan soket itu.

Mempersiapkan

  • OS: Windows 10
  • peramban: Chrome 86.0
  • versi socket.io: 3.0.0

Amati perbedaan perilaku saat menggunakan socket.io v2 sebagai gantinya.

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

Semua 4 komentar

Saya menghabiskan banyak waktu men-debug kode saya sendiri berpikir saya memecahkan sesuatu :')

Nantikan perbaikannya! Dan sekali lagi terima kasih atas kerja keras Anda dalam memulai v3.

Acara "menghubungkan" tidak pernah diaktifkan pada koneksi soket dan tidak mengisi array connecting di manajer:
https://github.com/socketio/socket.io-client/blame/master/lib/manager.ts#L599

Ketika _destroy dipanggil if (this.connecting.length) return; this._close(); akan selalu menutup koneksi.

Saya tidak melihat masalah dalam kode klien. Dalam kode server saya tidak dapat menemukan acara apa pun bernama "menghubungkan".

Inilah komit yang menghilangkan pancaran "menghubungkan".

https://github.com/socketio/socket.io-client/commit/b60e909039d4bbb979d32ec86ac16c5398526b44#diff -f0e64910289a49966c99ceadaa5637404e3439ec0812a4bdb7003fe1e5a33d1c

@darrachequesne Bisakah Anda memeriksa masalah ini.

@david-fong saya memang bisa mereproduksi masalah, terima kasih banyak untuk langkah-langkah rinci :+1:

Ini harus diperbaiki dengan https://github.com/socketio/socket.io-client/commit/f8f60fc860f51aa6465fc32dd9275a8e1d22f05d (termasuk dalam [email protected] ).

Sekali lagi, terima kasih atas laporan terperincinya, itu sangat membantu!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat