【发布时间】:2019-06-26 19:35:29
【问题描述】:
在聊天服务器上工作,我需要通过erlang中的gen_tcp接收json。
一种方法是发送一个 4 字节的 int 标头,这是一个好主意,因此如果来自客户端的消息超过最大长度,我也可以拒绝它们,但会增加客户端的复杂性。 另一种方法是读取行,如果我没记错的话,也应该适用于 json。
第三个想法是使用深度跟踪读取 json (可能是计数'{'?) 这样我还可以设置最大消息长度并使客户端代码不那么复杂。 我怎么能特别用 erlang 来做呢,即检查打开的方括号的数量并继续接收直到最后关闭?或者如果它甚至是一个好主意? xmpp 和其他消息传递协议如何处理这个问题?
【问题讨论】:
-
您的客户端是否使用 erlang 通过套接字发送数据?
-
不,可以是任何东西,android、ios、windows、web
-
那么似乎有两个选择:1)当另一端关闭套接字时消息结束(向套接字的另一端发送一个eof信号)。 2) 双方必须就某些将发出消息结束信号的协议达成一致,例如字节头。
-
1,不是一个好主意。 2、过去做过那样的事,不满意。