mat*_*att 5 javascript python binary websocket
我试图在二进制模式下使用websockets将二进制数据从用Python编写的服务器传输到客户端浏览器(运行javascript).我已经在文本模式下实现了这种通信,但现在我希望通过以二进制模式进行通信来提高性能.
我已经看到了所有的实施例(例如此,并且还如果一个通过其使用旋风matplotlib/webagg的源代码DIG),如权利要求他们正在使用二进制模式,但实际上它们似乎原始二进制数据编码成UTF-8(或者base64)在传输之前的某个时刻.在我看来,这不是真正的二进制传输,因为它增加了30%到50%的开销.
所以我的问题是,为了使用基于IP的websockets,是否必须将二进制数据编码为utf-8或base64?如果没有,请指出一个没有编码的例子.
我一直认为套接字确实支持真正的二进制通信,但由于某种原因,可能不是IP websockets的情况.也许有人可以阐明这个问题.在这一领域,过去一年左右似乎取得了进展,从而增加了混乱.
在IETF 6455 WebSocket协议支持直接发送/接收的二进制数据(旧Hixie协议变体没有).如果您正在实现自己的框架,那么您只需要将框架中的操作码设置为0x2,以指示有效负载是原始二进制数据而不是UTF-8编码文本.如果您使用的是python WebSocket库,则需要使用该库提供的API来选择二进制模式(如果库支持它).
注意:您链接的示例不是WebSocket示例(它只是常规TCP客户端和服务器).此外,该示例不是将数据编码为UTF-8或base64.Websockify是一个支持直接二进制数据的WebSocket服务器(除了旧的Hixie变体的base64编码).免责声明:我创建了websockify.
| 归档时间: |
|
| 查看次数: |
2928 次 |
| 最近记录: |