用于二进制数据传输的 websocket解码
我正在阅读规范和许多有关 websockets 使用的示例。几乎所有的人都谈论使用 websockets 进行 UTF-8 或 ascii 消息传输。
最新的 Hybi websocket 规范要求支持二进制传输。 hybi 规范中的 REQ 6
我还阅读了chrome 支持 Hybi 的地方。但最新版本的 Chrome 7.0 仅在 draft-hixie 时工作在 pywebsocket 配置中选择。
有没有浏览器支持 Hybi 规范?即使是开发,也没关系。
I was reading through the specification and many examples about usage of websockets. Almost all of them talk about UTF-8 or ascii message transfer using websockets.
The latest Hybi websocket spec requested support for binary transfer. REQ 6 in hybi spec
Also i read somewhere that chrome supports hybi. But latest release Chrome 7.0 works only when draft-hixie is selected in pywebsocket config.
Does any browser have support for hybi spec? Even if it is dev, its ok.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
WebSockets 支持非 UTF-8(即二进制)编码可能还需要一段时间。
我建议在客户端和服务器上使用 Base64 编码/解码。所有支持 WebSocket 的浏览器都有 window.atob (base64 解码)和 window.btoa (base64 编码)。您编写 WebSockets 服务器所用的大多数语言都有 base64 库(即 python 中的 base64 模块)。
如果您想传输二进制数据,您可能会对 noVNC 中包含的 wsproxy 感兴趣,它是一个基于网络的VNC 客户端。 wsproxy(有 C 和 Python 版本)是一个 WebSockets 到通用 TCP 套接字代理。它对进出浏览器的所有流量进行 Base64 编码/解码。您可以使用它从支持 WebSockets 的浏览器连接到任何类型的 TCP 端口。
请注意,noVNC 有一个 Base64 编码/解码的 Javascript 实现,因为不管你信不信,Javascript 版本比 atob/btoa 稍快。
免责声明:我创建了 noVNC。
It may be a while before non-UTF-8 (i.e. binary) encoding is supported in WebSockets.
I suggest using base64 encode/decode on the client and server. All browsers with WebSockets support have window.atob (base64 decode) and window.btoa (base64 encode). Most languages you might write a WebSockets server in have base64 libraries (i.e. base64 module in python).
If you are wanting to transfer binary data you might be interesting in wsproxy included with noVNC which is a web based VNC client. wsproxy (there is a C and python version) is a WebSockets to generic TCP sockets proxy. It base64 encodes/decodes all traffic to/from the browser. You can use it to connect from a WebSockets capable browser to any type of TCP port.
Note, noVNC has a Javascript implementation of base64 encode/decode because belief it or not, the Javascript version is slightly faster than atob/btoa.
Disclaimer: I created noVNC.