Göre protokol Spec (akım desteği ile tarayıcı uygulamanızı versiyonudur) v76:
Bağlantıyı temiz bir şekilde kapatmak için, yalnızca bir 0xFF bayt ve ardından bir 0x00 bayttan oluşan bir çerçeve, diğer eşin bağlantıyı kapatmasını istemek için bir eşten gönderilir.
Bir sunucu yazıyorsanız, sunucu bir istemci bağlantısını kapattığında yakın bir çerçeve gönderdiğinizden emin olmalısınız. Normal TCP soket kapatma yöntemi bazen yavaş olabilir ve uygulamaların bağlantı olmadığında bile bağlantının hala açık olduğunu düşünmesine neden olabilir.
Tarayıcı, sayfayı kapattığınızda veya yeniden yüklediğinizde bunu sizin için gerçekten yapmalıdır. Ancak, beforeunload olayını yakalayarak yakın bir çerçevenin gönderildiğinden emin olabilirsiniz:
window.onbeforeunload = function() {
websocket.onclose = function () {}; // disable onclose handler first
websocket.close();
};
Sayfa yenilendikten sonra onclose olayını nasıl elde edeceğinizden emin değilim. Sayfa yeniden yüklendiğinde websocket nesnesi (onclose işleyicili) artık var olmayacak. Sayfanız yüklenirken hemen sayfanızda bir WebSocket bağlantısı kurmaya çalışıyorsanız, eski bağlantının bağlantısı kesildikten çok kısa bir süre sonra sunucunun yeni bir bağlantıyı reddettiği bir sorunla karşılaşıyor olabilirsiniz (veya tarayıcı hazır değildir). bağlanmaya çalıştığınız noktada bağlantı kurmak için) ve yeni websocket nesnesi için bir onclose olayı alıyorsunuz.
onclose
kullanıcı gezinirken / sayfa yeniden yüklenirken olayın beklenmedik bir şekilde veya belki bilerek tetiklenmesidir. Ben ettik bir soru haberi doğru ve nasıl otomatik yeniden bağlanma uygulamak o vardır tarayıcı beklenen davranış ne olması gerektiğini soran.