【发布时间】:2011-09-28 06:25:45
【问题描述】:
我正在编写一个简单的流式 JSON 服务。它由长时间(数周或数月)间断发送的 JSON 消息组成。
关于通过普通 TCP 套接字发送多个 JSON 消息的最佳做法是什么?
我研究过的一些替代方案(以及它们的缺点)是:
- 换行符分隔 JSON - 缺点:JSON 中的换行符需要转义或禁止
- 受 websocket 启发的 0x00 0xff 框架 - 缺点:它现在是二进制的,不再是 utf-8
- 真正的 websockets - 缺点:缺乏(开源)websocket 客户端库
- http multipart http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html - 缺点:不完整的客户端支持?
- 没有分隔符 - 缺点:分块需要 JSON 解析(由于字符串中的卷曲,不能只计算卷曲)
有没有好的方法,或者至少是成熟的方法?
【问题讨论】:
-
在每条消息之间打开/关闭套接字怎么样?
-
@fvu 在高峰期,我们每秒可能有十个或更多消息,因此效率不高。它还可能导致弱路由器上的 NAT 耗尽。
-
为什么一个人不能数卷发?可以检测并避免计算字符串中的卷曲,不是吗?
标签: json websocket streaming multipart ldjson