我需要通过tcp在nodejs和erlang进程之间传递数据。 Erlang进程是一种从nodejs进程接收数据并进行一些处理的api服务器。
我想过使用json作为数据的结构,并使用ejson来编码/解码消息。然而,在基准测试时,我发现解码非常慢。大约20k msg / sec。
是否有更好或更快的方式通过tcp向erlang发送数据。有没有办法让我可以在erlang中跳过这个解码过程。
现在数据属于这种类型:
{ “事件”:“某事”, “频道”:“某个频道”, }
erlang将使用事件和频道根据它进行一些处理。
答案 0 :(得分:0)
您可以尝试其他json libs for erlang,或尝试使用bert
进行序列化答案 1 :(得分:0)
也许是协议缓冲区?
或者如何发送2行终止字符串并使用普通的旧tcp套接字。 您可以使用inets setopts将数据包类型设置为line。然后,如果您将套接字置于活动状态一次,拥有套接字的进程将逐个发送消息。 或者你可以使用被动模式,你明确地调用recv,它仍然可以逐行提供数据(注意长于缓冲区的行)。
答案 2 :(得分:0)
答案 3 :(得分:0)
你应该看看msgpack。它小巧,快速,并且具有为多个联盟构建的库,包括erlang和javascript。
我在多个项目中使用它,并对它的速度和使用起来很容易感到满意。