你應該爲什麼是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