2012-05-24 52 views
3

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

这种支持情况取决于所使用的库,还是提供了更一般的机制?

回答

5

您可以通过WebSocket的送三件事情(从客户角度):

  • 字符串
  • ArrayBuffers
  • 斑点

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

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

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

注2:当服务器发送二进制帧时,客户端可以选择返回什么类型的对象。这是WebSocket对象上的binaryType属性,可以设置为“arraybuffer”或“blob”。注3:如果您的浏览器仅支持较早的WebSocket Hixie协议系列(例如iOS Safari),则不存在二进制数据,您只能发送和接收字符串。

+0

感谢Websockets特有的额外细节。 – skyork

2

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

+0

在等待答案时,我阅读了这个:http://stackoverflow.com/questions/383692/what-is-json-and-why-would-i-use-it,这似乎表明JSON可能是解决方案。 – skyork

相关问题