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

标签 websocket comet

在交互式网络应用程序的上下文中,特别是那些利用网络套接字等技术的库,我们如何在客户端浏览器和服务器之间传输数据结构(例如 map 、列表、集合等)?到目前为止我遇到的示例仅传递字符串。

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

最佳答案

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

  • 字符串
  • ArrayBuffer
  • Blob

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

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

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

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

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

关于websocket - 如何在浏览器和服务器之间传输数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741743/

相关文章:

javascript - NodeJS、WebSockets(ws) 和 Openshift

javascript - WebSocket 可以即时切换其 binaryType 吗?

node.js - 实时双向套接字

python - "Error during WebSocket handshake: Invalid status line"

http - websockets 如何比简单的 HTTP 请求更快?

tomcat - gwt Comet 更容易在 jetty 或 tomcat 上实现?

node.js - 在多人 Socket.io 游戏中管理套接字

javascript - 在客户端实现comet

php - cometd 和 PHP : How to use Comet with a PHP Chat System?

comet - 可以为 Xmpp PubSub 或 Comet 实现使用超过 65535 个端口吗?