প্রোটোকল স্পেক ভি 76 অনুসারে (এটি হ'ল সংস্করণ যা বর্তমান সমর্থন সহ ব্রাউজারটি প্রয়োগ করে):
সংযোগটি পরিষ্কারভাবে বন্ধ করতে, একটি পিয়ার থেকে কেবল 0xFF বাইট সমন্বিত একটি ফ্রেম একটি পিয়ার থেকে প্রেরণ করা হয় যাতে অন্য পিয়ারটি সংযোগটি বন্ধ করে দেয় তা জিজ্ঞাসা করে।
আপনি যদি কোনও সার্ভার লিখতে থাকেন তবে সার্ভারটি ক্লায়েন্ট সংযোগ বন্ধ করার সময় আপনার কাছাকাছি ফ্রেম প্রেরণ নিশ্চিত করা উচিত। সাধারণ টিসিপি সকেট ঘনিষ্ঠ পদ্ধতিটি কখনও কখনও ধীর হয়ে যায় এবং অ্যাপ্লিকেশনগুলিকে মনে করতে পারে যে সংযোগটি এটি না থাকলেও এখনও খোলা রয়েছে।
আপনি পৃষ্ঠাটি বন্ধ বা পুনরায় লোড করার সময় ব্রাউজারটি সত্যই আপনার জন্য এটি করা উচিত। তবে আপনি পূর্ববর্তী লোড ইভেন্ট ক্যাপচার করে একটি নিবিড় ফ্রেম পাঠানো হয়েছে তা নিশ্চিত করতে পারেন:
window.onbeforeunload = function() {
websocket.onclose = function () {}; // disable onclose handler first
websocket.close();
};
পৃষ্ঠাটি রিফ্রেশ হওয়ার পরে কীভাবে আপনি একটি অনক্লোজ ইভেন্ট পেতে পারবেন তা আমি নিশ্চিত নই। পৃষ্ঠাটি পুনরায় লোড হয়ে গেলে ওয়েবসকেট অবজেক্ট (অনক্লোজ হ্যান্ডলার সহ) আর উপস্থিত থাকবে না। পৃষ্ঠাটি লোড হওয়ার সাথে সাথে আপনি যদি তত্ক্ষণাত্ আপনার পৃষ্ঠায় একটি ওয়েবস্কিট সংযোগ স্থাপনের চেষ্টা করছেন, তবে আপনি সম্ভবত এমন একটি সমস্যায় পড়ছেন যেখানে পুরানোটি সংযোগ বিচ্ছিন্ন হওয়ার পরে সার্ভার একটি নতুন সংযোগ অস্বীকার করছে (বা ব্রাউজার প্রস্তুত নয় আপনি যে সংযোগের চেষ্টা করছেন সেই স্থানে সংযোগ তৈরি করতে) এবং আপনি নতুন ওয়েবসকেট অবজেক্টের জন্য একটি অনক্লোজ ইভেন্ট পাচ্ছেন।
onclose
ইভেন্টটি অপ্রত্যাশিতভাবে ট্রিগার করা হয়েছে, বা সম্ভবত উদ্দেশ্য নেভিগেশন, ব্যবহারকারী নেভিগেট / পৃষ্ঠাটি পুনরায় লোড হওয়ার সাথে সাথে। প্রত্যাশিত আচরণটি কী হওয়া উচিত, কোন ব্রাউজারটির এটি সঠিক এবং আমরা কীভাবে স্বয়ংক্রিয় পুনঃসংযোগ কার্যকর করব তা জিজ্ঞাসা করে আমি একটি প্রশ্ন পোস্ট করেছি ।