如何在浏览器和服务器之间传输数据结构

时间:2012-05-24 16:39:28

标签: websocket comet

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

这种情况是否依赖于所使用的库,或者是否有更通用的机制?

2 个答案:

答案 0 :(得分:5)

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

  • 字符串
  • ArrayBuffers
  • 斑点

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

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

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

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

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

答案 1 :(得分:2)

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