数据在erlang和nodejs之间通过tcp传递

我需要通过tcp在nodejs和erlang之间传递数据。 Erlang进程是一种从nodejs进程接收数据并进行一些处理的api服务器。

我想使用json作为数据结构,并使用ejson来编码/解码消息。 然而,在基准testing中,我发现解码速度非常慢。 大约20k msg / sec。

有没有更好或更快的方式通过TCP发送数据到erlang。 有没有办法让我可以在erlang中跳过这个解码过程。

现在数据是这种types的:

{“event”:“someevent”,“channel”:“某个频道”,}

erlang会使用事件和通道来做一些基于它的处理。

你可以尝试其他的json库为erlang,或尝试使用bert序列化

也许协议缓冲区?

或者如果只是发送2行终止的string和使用普通的旧的TCP套接字。 您可以使用inets setopts将包types设置为行。 然后,如果你把你的套接字激活一次,拥有这个套接字的进程就会一个一个地发送消息。 或者你也可以使用被动模式,在那里你明确地调用recv,它仍然可以逐行给你数据(小心比缓冲区长的行)。

我会用节俭 。 在erlang中实现节俭服务器非常简单。 从这个例子看来,在javascript中实现一个客户端也是微不足道的。

你应该检查出msgpack 。 它的体积小,速度快,并且为多种语言构build,包括erlang和javascript。

我已经在多个项目中使用过它,并且对它的速度感到满意,使用起来也很简单。