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

3
在交互式Web应用程序的背景下,特别是那些利用诸如Websockets等技术的库,我们如何在客户端浏览器和服务器之间传输数据结构(例如地图、列表、集合等)?到目前为止,我遇到的示例仅传递字符串。
这是否取决于使用的库支持情况,还是有更通用的机制可用?
2个回答

5
您可以通过websocket发送三种类型的数据(从客户端角度看):
- 字符串 - ArrayBuffer - Blobs
如果您有一个复合的JavaScript数据结构(由映射和数组组成的层次结构),那么您应该使用JSON将它们序列化为字符串并将它们作为字符串发送到WebSocket连接。
如果您有兴趣在WebSocket连接上发送二进制字节或文件数据,您仍然可以将其序列化为字符串(带宽效率低下),或者您可以将数据发送为ArrayBuffer或Blob。
注意1:当发送ArrayBuffer或Blob时,在线上会生成一个二进制WebSocket帧,因此您的服务器需要支持二进制帧。
注意2:客户端可以选择在服务器发送二进制帧时返回哪种类型的对象。这是WebSocket对象中的binaryType属性,可以设置为"arraybuffer"或"blob"。
注意3:如果您的浏览器仅支持较旧的WebSocket Hixie协议系列(例如iOS Safari),则没有二进制数据,您只能发送和接收字符串。

2
通常的方式是使用JSON或类似格式。

在等待答案的同时,我阅读了这篇文章:https://dev59.com/_3RC5IYBdhLWcg3wMd5S,它似乎表明JSON可能是解决方案。 - skyork

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接