你应该为什么是json有效负载开发协议,哪些不是。因此,例如通过tcp/ip套接字,您将编写一个开始字符,然后是json有效内容,结束字符。这样,您在套接字上的读取就会知道消息何时开始和结束。现在你想要处理多个json有效载荷的特定情况,你需要一个分隔字符。
所以选择你的开始,结束和分隔符是由你决定的。有很多字符可以使用。看看一个ASCII /十六进制表的一些选择。但最好坚持不可打印的字符。否则,你会遇到负载可能包含这些字符的情况。
如果发生这种情况,您需要为转义序列开发另一组字符。这意味着一旦你定义了开始,结束和分隔符,这些字符在有效载荷中是非法的,并且必须由发送端的转义序列替换。这也意味着接收方必须将这些转义序列转换回正确的字符,以便有效载荷可以返回到初始状态。
所以你可以例如定义你的协议为。
[begin] = 0x02 // Hex for Start of text
[end] = 0x04 // Hex for end of end of transmission
[separator] = 0x03 // Hex for end of text
or
[begin] = 0x0B // Hex for Vertical Tab
[end] = 0x1C // Hex for file separator
[separator] = 0x1E // Hex for record separator
那么你的信息通过TCP/IP套接字(电线)未来会是什么样子(其中.......是信息之间的时间)
[begin][json payload][separator][end].......[begin][json payload][seperator][json payload][separator][json payload][separator][end].......
,所以你会写你的代码在线上读取直到找到开头。然后存储有效负载,直到找到分隔符。然后,如果分隔符后面的下一个字符不是结束包络循环并存储下一个有效载荷。
我也建议在谷歌搜索MLLP(最低级别协议)。
我在问自己同样的问题!您是否考虑过使用二进制协议而不是JSON,比如Message Pack? – plang