Socket.io: Terus menerus "transportasi tutup" pada klien

Dibuat pada 3 Agu 2017  ·  48Komentar  ·  Sumber: socketio/socket.io

Saya telah menyiapkan socket.io v.1.4.5 w express dan saya tidak dapat melacak alasan pemutusan yang tidak dapat dijelaskan pada klien. Alasan yang diberikan oleh peristiwa disconnect pada klien adalah "transport close." Itu terjadi sangat konsisten pada beberapa klien.

Apakah ada penjelasan untuk klien yang "transport close" terputus pada apa yang tampaknya merupakan interval waktunya? Klien menyambung kembali dengan baik tetapi menyebabkan ketidaknyamanan yang luar biasa karena sering terjadi.

Saya sudah mencoba berbagai pengaturan, seperti mengubah pingInterval, pingTimeout dan port untuk soket web (sekarang saya menggunakan port 80). Tapi tidak peduli apa yang tampaknya saya lakukan, masalahnya tidak pernah hilang.

Komentar yang paling membantu

Saya mengalami masalah pemutusan socket.io setiap 30 detik setelah menerapkan ke Google Cloud Platform (GCP). Ternyata itu adalah batas waktu http default yang digunakan oleh Global Load Balancer. Dokumentasi GCP mengatakan Anda harus mengubah nilai saat menggunakan soket web. Petunjuk untuk mengubah pengaturan ada di sini:
https://cloud.google.com/load-balancing/docs/backend-service#timeout -setting

Semua 48 komentar

Diperbarui ke socket.io v2.0.3. dan masih mengalami masalah. Sepertinya hanya terjadi di salah satu PC saya. Saya juga menonaktifkan firewall windows, tetapi masalahnya masih terjadi.

Beralih ke ws ( https://github.com/websockets/ws ) yang melibatkan penulisan ulang besar-besaran, tetapi sekarang saya menggunakan objek browser websocket asli di sisi klien dan semuanya berfungsi dengan baik. Saya tidak lagi memiliki masalah. soket.io begitu lama!

Mengalami hal yang sama. Saya benar-benar tidak ingin harus melalui penulisan ulang. Adakah yang berhasil dengan masalah ini?

Aku benar-benar lelah dengan masalah ini.
Saya pikir kalian harus memeriksa versi "socket.io" dengan "socket.io-client".
jika versi server / klien tidak cocok, koneksi sangat tidak stabil.

Saya sarankan hanya menggunakan CDN seperti di bawah ini untuk klien.

Ada berita tentang masalah ini, karena saya memiliki masalah yang sama persis!

Saya memiliki masalah yang sama juga ketika saya menyebarkan ke k8ns tetapi ketika saya menjalankannya secara lokal itu berfungsi dengan baik.

saya juga menderita ini...

@talas9 @muhammadnasr @htamop pertanyaan umum untuk dapat men-debug / mereproduksi masalah:

  • versi klien / server mana yang Anda gunakan?
  • peramban yang mana?
  • apakah itu dapat direproduksi dengan biola ?

Terima kasih!

Saya telah mencobanya dengan 2.1.0 dan 2.0.4 klien dan server. Di chrome dan safari (terbaru).
Ketika saya menjalankan secara lokal itu berfungsi dengan baik (dapat terhubung selama lebih dari satu jam tanpa terputus), tetapi ketika saya menyebarkan ke K8ns di belakang ingress loadbalancer, masalah ini terjadi ...

Koneksi FYI ditutup tepat setelah 25 detik setiap kali, lihat tangkapan layar

@talas9 @htamop @dnwldbs84 apakah Anda menggunakan penyeimbang beban?

@darrachequesne Penyeimbang beban mana yang Anda rekomendasikan untuk digunakan dengan socket.io ?

@muhammadnasr @darrachequesne
Saya menggunakan server 2.1.0 dan klien 1.0.0 (android)
Saya perlu menjaga koneksi tetap stabil selama 8~9 jam tetapi tiba-tiba terputus.
Saya mengubah kedua versi menjadi 1.7.4 dan 0.8.3? menurut posting solusi lainnya. Saya akan mencoba menguji apakah itu berfungsi dengan baik besok

Saya belum pernah menggunakan penyeimbang beban. Baik klien dan server menggunakan versi 2.0.3 dari Socket.io (Saya tidak dapat mengingat semua versi yang saya gunakan). Saya tidak tahu browser mana yang menyebabkan masalah. Namun, sebagian besar pengguna telah menggunakan Chrome. Dalam kasus saya, pemutusan dilakukan secara acak sehingga tidak dapat mereproduksi.
Dan saya berubah menjadi ws. Saya tidak yakin apakah masalahnya terpecahkan.

@muhammadnasr @darrachequesne @dnwldbs84
Saya pikir itu diselesaikan dalam kasus saya.
Saya menggunakan 0.8.3 socket.io-client di layanan latar depan Android (api 26) dan versi 1.3.5 di server nodejs.
Namun, masalahnya mungkin bukan versi.
Saya mengubah pingInterval di server menjadi 10ms dan tampaknya berfungsi dengan baik (ping timeout dan transport close tidak terjadi)
var io = membutuhkan('socket.io')(http, {pingInterval: 10, pingTimeout: 4000 });

10 milidetik terlalu sempit, dengan cara ini jaringan akan kewalahan.

10 milidetik adalah untuk mempersempit, dengan cara ini jaringan akan kewalahan.

Benar!

@muhammadnasr penyeimbang beban apa pun harus berfungsi. Silakan lihat contoh berikut:

Sticky-session diperlukan, jika Anda mengaktifkan polling (yang merupakan default).

@darrachequesne Saya memiliki masalah yang sama, setelah sekitar 8~9 jam soket terputus dengan alasan "transportasi tutup"

Saya menggunakan:

Chrome: 61.0.3163.100
Electron: 2.0.2
Socket.io: 2.1.1

Punya masalah yang sama, dapat memperbaikinya menggunakan CDN dari komentar ini https://github.com/socketio/socket.io/issues/3025#issuecomment -329024833 dan mengatur batas waktu dan interval seperti di bawah ini:

io.set('heartbeat timeout', 60000);
io.set('heartbeat interval', 25000);

Hai,
Kami memiliki masalah yang sama dengan socket.io ketika dijalankan di bawah Kubernetes dan NGINX Ingress Controller.
Ketika konfigurasi nginx dimuat ulang, ia membuat ulang proses dan semua komunikasi yang ada dihapus, yang menyebabkan transport close , penerapan lain yang menggunakan pengontrol ingress dapat menyebabkan konfigurasi memuat ulang

Pertama-tama, terima kasih untuk proyek yang luar biasa ini.

Masalah yang sama di sini, mungkin saya akan membawakan Anda sesuatu yang baru.

Saya memiliki server ws, dan klien ws pada node js.
Klien ws ini digunakan dari aplikasi node js di mana merupakan layanan (layanan mikro).

Klien ws lain dari browser web (dari aplikasi klien) berkomunikasi melalui server ws dengan layanan node js ini.

Semuanya bekerja seperti yang diharapkan.

Pada stress test sekarang (10 klien meminta data secara intensif), di akhir tes, ketika semua pekerjaan dan transaksi telah selesai, koneksi layanan ditutup dengan kesalahan "transport close". Ini tidak selalu terjadi.

Ini adalah konfigurasi server:
pingWaktu habis: 15000,
pingInterval: 20000,
Sepertinya selama beban berat beberapa ping hilang...? atau saya tidak tahu.
Apakah ini sesuatu yang harus saya harapkan?

Juga, dengan konfigurasi default pingTimeout: 2000, saya mendapatkan kesalahan ini di tengah stress test. Ini juga benar-benar tidak terduga, tetapi katakanlah server kelebihan beban dan tidak dapat merespons dalam 2 detik (!) dan kami mungkin mendapatkan kesalahan ini. Tapi sekarang dengan pingTimeout: 15000 itu terjadi hampir 50% dan hanya setelah akhir tes.

Hmho, saya percaya layanan mikro seharusnya mengharapkan kesalahan semacam ini, bahkan jika mereka berjalan pada lan yang sama, tetapi pertanyaannya adalah mengapa ini terjadi?

Saya mencoba membuat pengaturan kecil untuk mereproduksi masalah ini tetapi saya tidak berhasil.

Bagaimana cara mengaktifkan log? DEBUG=socket.io* tidak berfungsi. Meskipun variabel disetel, saya tidak mendapatkan output apa pun.

Saya sangat percaya bahwa ini terkait dengan #2924.
Menghubungkan kembali pada klien disebabkan oleh beberapa browser (safari dan chrome) throttling timer untuk tab tidak aktif untuk menghemat baterai.
Ini menghasilkan pesan detak jantung tertunda dari klien dan server menutup koneksi karena pingTimeout.
Meningkatkan pingTimeout berfungsi sampai batas tertentu tetapi saya masih mendapatkan koneksi kembali di lingkungan produksi.

Saya memiliki masalah yang sama juga ketika saya menyebarkan ke k8ns tetapi ketika saya menjalankannya secara lokal itu berfungsi dengan baik.

@muhammadnasr di mana Anda bisa melewati masalah penyebaran di K8? Saya mengalami masalah serupa.

@bheema01 pastikan Anda mengaktifkan stickysession di proxy/loadbalancer Anda dan itu akan berfungsi

Punya kesalahan yang sama

Masalah yang sama ..... klien terhubung dan terputus berulang kali ketika titik akhir soket sisi server berada di belakang penyeimbang beban. Bahkan setelah mengkonfigurasi sesi lengket , masalah masih ada . @muhammadnasr apakah Anda dapat menyelesaikan masalah ini.

Saya telah melihat kesalahan ini, ketika utas sering diblokir selama lebih dari 200 ms.
Jika ini sering terjadi, ini buruk untuk socket.io _dan juga untuk aplikasi Anda_.
socket.io memiliki batas waktu untuk memeriksa detak jantung koneksi.
Jika batas waktu ini terlampaui maka koneksi akan dimatikan dan kami mendapatkan kesalahan ini.

@varunSabnis setelah memperbaiki sesi lengket, semuanya bekerja dengan lancar.

@dennisat Saya mencoba memeriksa berapa lama klien saya menerima paket pong. Setiap kali melampaui 200 ms, yang diuji baik dengan server soket di cloud dan server soket di localhost saya. Pengaturan lokal tidak memutuskan soket (semuanya berfungsi dengan baik), sedangkan di soket pengaturan cloud terus terhubung dan terputus. Jadi, saya rasa bukan itu masalahnya.
@muhammadnasr oke, itu bagus. Sebenarnya sudah mengaktifkannya tetapi masih mengalami beberapa masalah.

@muhammadnasr @darrachequesne @dnwldbs84
Saya pikir itu diselesaikan dalam kasus saya.
Saya menggunakan 0.8.3 socket.io-client di layanan latar depan Android (api 26) dan versi 1.3.5 di server nodejs.
Namun, masalahnya mungkin bukan versi.
Saya mengubah pingInterval di server menjadi 10ms dan tampaknya berfungsi dengan baik (ping timeout dan transport close tidak terjadi)
var io = membutuhkan('socket.io')(http, {pingInterval: 10, pingTimeout: 4000 });

Ini bekerja secara ajaib, terima kasih!!!!!!!

Saya menemukan saya mendapat 'transport close' setiap interval ping.

Aku benar-benar lelah dengan masalah ini.
Saya pikir kalian harus memeriksa versi "socket.io" dengan "socket.io-client".
jika versi server / klien tidak cocok, koneksi sangat tidak stabil.

Saya sarankan hanya menggunakan CDN seperti di bawah ini untuk klien.

Masalah terkait

stnwk picture stnwk  ·  4Komentar

MyMomSaysIAmSpecial picture MyMomSaysIAmSpecial  ·  4Komentar

doughsay picture doughsay  ·  4Komentar

adammw picture adammw  ·  4Komentar

Elliot9 picture Elliot9  ·  4Komentar
bleepcoder.com menggunakan informasi GitHub berlisensi publik untuk menyediakan solusi bagi pengembang di seluruh dunia untuk masalah mereka. Kami tidak berafiliasi dengan GitHub, Inc. atau dengan pengembang mana pun yang menggunakan GitHub untuk proyek mereka. Kami tidak meng-host video atau gambar apa pun di server kami. Semua hak milik masing-masing pemiliknya.
Sumber untuk halaman ini: Sumber

Bahasa pemrograman populer
Lebih banyak proyek GitHub

© 2024 bleepcoder.com - Contact
Made with in the Dominican Republic.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.