【问题标题】:Websockets and binary dataWebsockets 和二进制数据
【发布时间】:2011-07-29 07:30:22
【问题描述】:

据我所知,websockets 支持二进制数据传输。二进制支持错误is fixed.

那么,有没有支持二进制数据传输的 websocket 服务器? Socket.io 似乎错过了这个机会。也许还有其他人?

【问题讨论】:

    标签: javascript html node.js websocket socket.io


    【解决方案1】:

    在 WebSocket 服务器中支持二进制数据非常简单(实际上比 UTF-8 工作量少)。真正的问题是在浏览器中支持二进制数据类型。它正在开发中,但目前还没有可以支持发送和接收二进制类型(类型化数组、blob)的浏览器版本。

    如果您现在需要在浏览器添加支持之前发送二进制数据,您可以尝试我的websockify python 服务器和 Javascript 客户端库。它使用 base64 编码通过网络传输二进制数据。它使用数字数组 (0-255) 来表示 Javascript 端的二进制数据,而不是类型化数组/blob。

    一些链接:

    【讨论】:

    • 最近的 Chrome 版本支持二进制。 Mozilla 方面终于有了行动,我预计 Mozilla 的下一个 Aurora(alpha)版本也将得到支持。我怀疑 IE 10 也有支持,但我没有直接探索过。
    • @kanaka 你知道是否有任何方法可以查询浏览器的二进制支持吗?它看起来像 FF10 ,它不支持二进制帧,只是默默地丢弃“坏”帧。
    • @jalf,不幸的是,没有干净简单的方法。我知道的唯一对象检测方法是实例化一个假 WebSocket 对象,然后查看它是否具有 binaryType 属性:ws = new WebSocket("ws://localhost:12345"); if ("binaryType" in ws) { .... }; 在 Chrome 提供初始支持之前我曾抱怨过这个问题,但没有得到修复它的动力。
    【解决方案2】:

    以下是具有“二进制消息”功能行的 WebSockets 实现(浏览器、客户端、服务器)的比较:

    http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations

    目前(09/16/2011),支持二进制 WS 消息的浏览器有:

    • Chrome 15 或更高版本
    • IE10(Windows 8 开发者预览版的一部分)
    • Firefox 11 或更高版本

    详细的测试报告和浏览器对比见:

    http://autobahn.ws/testsuite/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-07
    • 2012-11-16
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2012-12-05
    • 2015-07-22
    • 2021-05-11
    相关资源
    最近更新 更多