Masalahnya adalah ada 2 versi protokol utama WebSockets yang digunakan saat ini. Versi lama yang menggunakan [0x00][message][0xFF]
protokol, dan kemudian ada versi baru menggunakan paket berformat Hybi .
Versi protokol lama digunakan oleh Opera dan iPod / iPad / iPhone sehingga sebenarnya penting bahwa kompatibilitas mundur diterapkan di server WebSockets. Dengan browser ini menggunakan protokol lama, saya menemukan bahwa menyegarkan halaman, atau menavigasi jauh dari halaman, atau menutup browser, semua mengakibatkan browser secara otomatis menutup koneksi. Bagus!!
Namun dengan browser yang menggunakan versi protokol baru (mis. Firefox, Chrome dan akhirnya IE10), hanya menutup browser akan mengakibatkan browser secara otomatis menutup koneksi. Dengan kata lain, jika Anda me-refresh halaman, atau menavigasi jauh dari halaman, browser TIDAK secara otomatis menutup koneksi. Namun, apa yang dilakukan browser, adalah mengirim paket hybi ke server dengan byte pertama (proto ident) sedang 0x88
(lebih dikenal sebagai bingkai data tutup). Setelah server menerima paket ini, ia dapat dengan paksa menutup koneksi itu sendiri, jika Anda memilihnya.
onclose
acara tersebut dipicu secara tak terduga, atau mungkin dengan sengaja, saat pengguna menavigasi / halaman dimuat ulang. Saya telah memposting pertanyaan yang menanyakan perilaku yang diharapkan, browser mana yang benar dan bagaimana kita menerapkan koneksi ulang otomatis.