2012-02-11 12 views
15

Có bản tóm tắt ở đâu khác biệt của giao thức khác nhau giữa các bản nháp WebSockets khác nhau không?Sự khác biệt về giao thức giữa các phiên bản WebSockets là gì?

Mức hỗ trợ trình duyệt vẫn còn ở khắp nơi, vì vậy, không đủ để xem RFC.

Rõ ràng là các thay đổi của Sec-WebSocket-Version và tôi biết định dạng ban đầu khá khác biệt. Tuy nhiên, tôi có nghĩa là những thay đổi tinh tế hơn trong giao thức. Ví dụ, hybi-10 (v8), trong khung, cho thấy chiều dài tải trọng mở rộng được lưu trữ là 16/63, thay vì 16/64 trong RFC 6455 (v13).

Vì vậy: có bản tóm tắt các thay đổi ở bất kỳ đâu không?

Cách khác (nếu chúng ta bỏ qua các bản nháp đầu tiên và số phiên bản), có phải trường hợp giao thức cơ bản giống nhau hay không, và bản nháp chủ yếu là chỉnh sửa cho văn bản đặc tả?

Trả lời

19

Danh sách Wikipedia WebSocket mà các trình duyệt hỗ trợ giao thức nào.

Ngoài ra, IETF cung cấp một công cụ khác có thể được sử dụng để so sánh bất kỳ thông số dự thảo RFC nào. Ví dụ, để so sánh WebSocket dự thảo 15 và 17 đi ở đây:

Điều chỉnh url1 và địa chỉ url2 để có được một diff cho các phiên bản tùy ý. Lưu ý rằng điều này sẽ cho bạn thấy sự khác biệt về văn bản đối với thông số kỹ thuật và thay đổi lớn đối với thông số kỹ thuật thường xảy ra mà không có sự khác biệt tương ứng trên dây. Tôi khuyên bạn nên tìm kiếm sự khác biệt cho phần "Giao thức Tổng quan" và phần "Giao thức Khung Cơ sở" hiển thị tóm tắt tiêu đề và biểu đồ khung tương ứng.

Sự khác biệt lớn nhất trong giao thức dây xảy ra giữa Hixie-76/HyBi-00 (HyBi-00 chỉ là một bản sao của Hixie-76 để bắt đầu chuỗi mới) và phần còn lại của chuỗi HyBi bắt đầu bằng HyBi-04 (HyBi-17 trở thành IETF RFC 6455). Một số thay đổi lớn từ dòng Hixie đến dòng HyBi:

  • Giao thức Hixie-76 có một cái bắt tay băm đặc biệt xảy ra sau tiêu đề bắt tay nhưng trước khung dữ liệu thực tế.
  • Trong Hixie-76, các khung được đặt trước 0x00 và được gắn với 0xff. Không có cách nào để xác định chiều dài của khung trừ khi nhận/đệm tất cả các cách đến cuối khung. Trong chuỗi HyBi (sau HyBi-00) chiều dài khung là một phần của tiền tố/tiêu đề và không có hậu tố.
  • Loạt HyBi hỗ trợ cả văn bản UTF-8 và dữ liệu nhị phân trong tải trọng (Hixie chỉ hỗ trợ UTF-8). Điều này được biểu thị bằng và opcode trong tiêu đề khung.
+1

Ok, công cụ so sánh cụ thể là người chiến thắng thực sự ở đây - cho phép tôi tự tin. Chúc mừng. Tôi đã nhận thức rõ về sự khác biệt 00; đó là sự khác biệt nhỏ giữa các bản thảo sau mà tôi muốn kiểm tra. –

+0

Tìm thấy một thay đổi thú vị, hãy làm lại tiêu đề gốc; chi tiết hơn trong câu trả lời của tôi –

2

Tôi không biết nhiều phiên bản giao thức đang được sử dụng hiện tại. Tôi có một máy chủ websocket hỗ trợ Hixie-76 và hybi-10 đến 17 (chỉ thay đổi trong Sec-WebSocket-Version) hoạt động chống lại Safari (desktop + iOS), Firefox và Chrome.

(cũ hơn) Hixie-76 hữu ích khi nói chuyện với thiết bị iOS ít nhất.

hybi-10 trở đi về cơ bản giống nhau. Tôi giả định rằng ví dụ của bạn về tải trọng mở rộng được quảng cáo là 63 bit trong hybi-10 là lỗi đánh máy và là một trong nhiều chỉnh sửa nhỏ được thực hiện khi bản nháp di chuyển nhanh chóng từ 10 đến 17.

Sau đó: được chỉnh sửa thành cho thấy rằng một số phiên bản Safari thực sự sử dụng Hixie-76

+0

Đó cũng là kết luận của tôi; sử dụng 63 sẽ có nghĩa là mọi thứ có sự liên kết khó xử, điều đó sẽ trở nên điên rồ. Mát mẻ; Tôi sẽ thử phiên bản bắt chước cho 10 đến 17, và thêm hỗ trợ hybi-00 rõ ràng. Cảm ơn. –

+0

Trên thực tế, có sự thay đổi - xem câu trả lời của tôi –

+0

Ah, xin lỗi về điều đó. Tôi đã quên rằng máy chủ websocket (đơn giản) của tôi không sử dụng tiêu đề gốc. – simonc

4

Để thêm thay đổi cụ thể; trong Sec-WebSocketVersion < = 8, xuất xứ là Sec-WebSocket-Origin; tuy nhiên, trong 13 điều này thay đổi thành tiêu đề Origin. Điều này thay đổi cụ thể between hybi-10 and hybi-11, cả hai bản triển khai phiên bản "8". Cũng lưu ý rằng nó là Origin trong hixie-76/hybi-00, vì vậy có vẻ như nó đã chuyển từ Origin thành Sec-WebSocket-Origin và sau đó quay lại Origin.

Các vấn đề liên quan