我正在Erlang中编写一个分布式聊天应用程序,以供我自己学习/受益。我有一个客户端和一个维护持久TCP连接的服务器。客户端使用gen_tcp:connect / 3启动连接。服务器实际上分布在多个节点上。
gen_tcp文档说:
可以使用send / 2将数据包发送到返回的套接字套接字。从对等方发送的数据包将作为消息传递:
{tcp,Socket,Data}
因此,我的客户端能够接收服务器作为普通Erlang消息发送的任何数据。这对我的应用来说是理想的。
问题是我无法看到任何方法使服务器上的连接以相同的方式运行。如果我的服务器可以接收作为Erlang消息发送的数据,我会喜欢它。这样,服务器可以在等待客户端发送消息的同时发送数据(即当聊天室中的其他人发送消息时)。
有没有办法实现这种行为?
编辑:我知道prim_inet:async_accept / 2,但如果可能的话,我更愿意采用文档化的方法。