【问题标题】:How to transfer data structures between browser and server如何在浏览器和服务器之间传输数据结构
【发布时间】:2012-05-24 16:39:28
【问题描述】:

在交互式 Web 应用程序的上下文中,尤其是那些利用 websockets 等技术的库,我们如何在客户端浏览器和服务器之间传输数据结构(例如地图、列表、集合等)?到目前为止我遇到的例子只传递字符串。

这种支持是否取决于所使用的库,或者是否有更通用的机制可用?

【问题讨论】:

    标签: websocket comet


    【解决方案1】:

    您可以通过 websocket 发送三件事(从客户端的角度来看):

    • 字符串
    • 数组缓冲区
    • 斑点

    如果您有复合 Javascript 数据结构(地图和数组的层次结构),那么您应该使用 JSON 将它们序列化为字符串并通过 WebSocket 连接将它们作为字符串发送。

    如果您对通过 WebSocket 连接发送二进制字节或文件数据感兴趣,您仍然可以序列化为字符串(带宽效率低下),或者您可以将数据作为 ArrayBuffers 或 Blob 发送。

    注意 1:当发送 ArrayBuffer 或 Blob 导致网络上的二进制 WebSocket 帧时,您的服务器需要支持二进制帧。

    注2:当服务器发送二进制帧时,客户端可以选择返回什么类型的对象。这是 WebSocket 对象上的 binaryType 属性,可以设置为“arraybuffer”或“blob”。

    注意 3:如果您的浏览器只支持较旧的 WebSocket Hixie 协议系列(例如 iOS Safari),则没有二进制数据,您只能发送和接收字符串。

    【讨论】:

      【解决方案2】:

      通常的方式是 JSON 或类似的。

      【讨论】:

      猜你喜欢
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 2013-01-18
      • 2013-06-16
      • 2018-02-11
      • 1970-01-01
      相关资源
      最近更新 更多