Vấn đề của nó là có 2 phiên bản giao thức chính của WebSockets được sử dụng hiện nay. Phiên bản cũ sử dụng [0x00][message][0xFF]
giao thức, và sau đó là phiên bản mới sử dụng các gói được định dạng Hybi .
Phiên bản giao thức cũ được Opera và iPod / iPad / iPhone sử dụng, do đó, điều thực sự quan trọng là khả năng tương thích ngược được thực hiện trong các máy chủ WebSockets. Với các trình duyệt này sử dụng giao thức cũ, tôi phát hiện ra rằng làm mới trang hoặc điều hướng khỏi trang hoặc đóng trình duyệt, tất cả dẫn đến trình duyệt tự động đóng kết nối. Tuyệt quá!!
Tuy nhiên, với các trình duyệt sử dụng phiên bản giao thức mới (ví dụ: Firefox, Chrome và cuối cùng là IE10), chỉ đóng trình duyệt sẽ dẫn đến trình duyệt tự động đóng kết nối. Điều đó có nghĩa là, nếu bạn làm mới trang hoặc điều hướng khỏi trang, trình duyệt KHÔNG tự động đóng kết nối. Tuy nhiên, những gì trình duyệt làm, là gửi một gói hybi đến máy chủ với byte đầu tiên (nhận dạng proto) 0x88
(được gọi là khung dữ liệu đóng). Khi máy chủ nhận được gói này, nó có thể tự đóng kết nối, nếu bạn chọn.
onclose
sự kiện được kích hoạt bất ngờ, hoặc có thể có chủ đích, khi người dùng điều hướng / trang được tải lại. Tôi đã đăng một câu hỏi hỏi hành vi dự kiến sẽ là gì, trình duyệt nào có quyền và cách chúng tôi thực hiện tự động kết nối lại.