私自身の学習/利益のために、Erlang で分散チャット アプリケーションを作成しています。永続的な TCP 接続を維持するクライアントとサーバーがあります。クライアントは、gen_tcp:connect/3 を使用して接続を開始します。サーバーは実際には複数のノードに分散されています。
gen_tcp のドキュメントには次のように書かれています。
send/2 を使用して、返されたソケット Socket にパケットを送信できます。ピアから送信されたパケットは、メッセージとして配信されます。
{tcp、ソケット、データ}
このため、私のクライアントは、サーバーが通常の Erlang メッセージとして送信するデータを受信できます。これは私のアプリケーションにとって望ましいものです。
問題は、サーバー上の接続を同じように動作させる方法が見当たらないことです。サーバーが送信されたデータを Erlang メッセージとして受信できるようになれば幸いです。このようにして、クライアントがメッセージを送信するのを待っている間に、サーバーはデータを送信できます (つまり、チャット ルームの別の人がメッセージを送信した場合)。
この動作を実装する方法はありますか?
編集: 私は prim_inet:async_accept/2 を認識していますが、可能であれば文書化されたアプローチを希望します。