2010-09-27 36 views
10

Tôi đã đọc kỹ thông số kỹ thuật và nhiều ví dụ về cách sử dụng ổ cắm web. Hầu như tất cả trong số họ nói về UTF-8 hoặc chuyển tin nhắn ascii bằng cách sử dụng websockets.websocket để chuyển dữ liệu nhị phân và giải mã

Thông số kỹ thuật websocket mới nhất của Hybi yêu cầu hỗ trợ truyền nhị phân. REQ 6 in hybi spec

Tôi cũng đọc ở đâu đó rằng chrome hỗ trợ hybi. Nhưng bản phát hành Chrome 7.0 mới nhất chỉ hoạt động khi draft-hixie được chọn trong cấu hình pywebsocket.

Trình duyệt nào có hỗ trợ thông số kỹ thuật hybi không? Ngay cả khi nó là dev, ok của nó.

+2

Tôi đoán bạn sẽ biết điều này ngay bây giờ, nhưng là bản cập nhật chung cho mọi người - Chrome Canary hiện hỗ trợ tính năng này. – pimvdb

Trả lời

7

Có thể mất một lúc trước khi mã hóa không phải UTF-8 (tức là nhị phân) được hỗ trợ trong WebSockets.

Tôi khuyên bạn nên sử dụng mã hóa/giải mã base64 trên máy khách và máy chủ. Tất cả các trình duyệt có hỗ trợ WebSockets đều có window.atob (giải mã base64) và window.btoa (mã hóa base64). Hầu hết các ngôn ngữ bạn có thể viết một máy chủ WebSockets có thư viện base64 (tức là mô-đun base64 trong python).

Nếu bạn muốn chuyển dữ liệu nhị phân, bạn có thể thú vị trong wsproxy kèm theo noVNC là ứng dụng khách VNC dựa trên web. wsproxy (có một phiên bản C và python) là một WebSockets cho proxy socket TCP chung. Nó base64 mã hóa/giải mã tất cả lưu lượng truy cập đến/từ trình duyệt. Bạn có thể sử dụng nó để kết nối từ trình duyệt có khả năng WebSockets với bất kỳ loại cổng TCP nào.

Lưu ý, noVNC có cài đặt mã hóa/giải mã base64 vì tin tưởng hay không, phiên bản Javascript nhanh hơn một chút so với atob/btoa.

Tuyên bố từ chối trách nhiệm: Tôi đã tạo noVNC.

+1

Cập nhật: bản nháp IETF-07 của giao thức WebSockets trong cuộc gọi cuối cùng và có hỗ trợ khung nhị phân. Đây là một lỗi với thảo luận về các thay đổi API để thêm hỗ trợ nhị phân: http://www.w3.org/Bugs/Public/show_bug.cgi?id=12102 – kanaka

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