2016-08-05 6 views
0

YAWSを実行するノードBにノードA(yawsプロセスを監視するgen_serverを含む)を接続しました。Yawsプロセスが接続ノードに「DOWN」メッセージを送信しない

gen_serverのhandle_infoは、特にyawsプロセスからではなく、リモートノードから 'EXIT'と 'DOWN'メッセージを受信します。しかし、私がヨーヨーを止めると、gen_serverは "no connection"のようなメッセージを受け取ります。

これで、yawsプロセスからの「DOWN」メッセージはどのように受け取られますか?

答えて

2

他のErlangプロセスと比較して、Yawsプロセスに関して特別なものは何もありません。ディスパッチやリクエストの処理が終了したときにリクエストを受け取るYawsプロセスが期待されているようですが、それは動作しません。むしろ、デフォルトでは、Yawsは要求を処理するためのプロセスプールを保持し、複数の要求に対してそれらを再利用します。

プロセスプールを無効にする場合は、Yaws設定のグローバルセクションでYaws設定変数acceptor_pool_sizeを0に設定します。

+1

だから、yawsクライアントがいつ切断するかを知る方法はありませんか? –

+0

一般に、TCPクライアントが切断されたときに確実に知ることは難しいです。たとえば、[この質問](http://stackoverflow.com/q/22860969/409228)を参照するか、その問題のWeb検索を試してみてください。クライアントの切断を合理的に信頼性の高い方法で検出するには、ハートビートを使用して有効性をチェックするアプリケーション固有のプロトコルを使用して、接続を介してトラフィックを強制し、ソケットを定期的に読み書きすることができます。 –

関連する問題