問題タブ [gen-tcp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sockets - gen_tcp:recv/2 を使用する代わりに TCP パケットをメッセージとして受信する
私自身の学習/利益のために、Erlang で分散チャット アプリケーションを作成しています。永続的な TCP 接続を維持するクライアントとサーバーがあります。クライアントは、gen_tcp:connect/3 を使用して接続を開始します。サーバーは実際には複数のノードに分散されています。
gen_tcp のドキュメントには次のように書かれています。
send/2 を使用して、返されたソケット Socket にパケットを送信できます。ピアから送信されたパケットは、メッセージとして配信されます。
{tcp、ソケット、データ}
このため、私のクライアントは、サーバーが通常の Erlang メッセージとして送信するデータを受信できます。これは私のアプリケーションにとって望ましいものです。
問題は、サーバー上の接続を同じように動作させる方法が見当たらないことです。サーバーが送信されたデータを Erlang メッセージとして受信できるようになれば幸いです。このようにして、クライアントがメッセージを送信するのを待っている間に、サーバーはデータを送信できます (つまり、チャット ルームの別の人がメッセージを送信した場合)。
この動作を実装する方法はありますか?
編集: 私は prim_inet:async_accept/2 を認識していますが、可能であれば文書化されたアプローチを希望します。
sockets - Erlang で大きなメッセージを gen_tcp サーバーに送信する
クライアントサーバープログラムを実装しようとしています。サーバーは、次のコードを使用してリッスン ソケットをセットアップします。
gen_tcp:listen(ポート、[バイナリ、{アクティブ、真}])
問題は、クライアントが大きなメッセージ (タプルのリスト) をサーバーに送信すると、サーバーが代わりにいくつかのメッセージを受信することです。TCP が長いメッセージをいくつかのメッセージに分割しているようです。
長いメッセージ全体を一度に取得するにはどうすればよいでしょうか?
tcp - TCP サーバーが応答していません
gen_tcp OTP モジュールを使用して、Elixir で次の TCP サーバーを作成しました。
telnet を使用してサーバーに接続するとすぐに切断されます。何が起こっているかについて何か考えはありますか?