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