0

サーバー側のJavaクラスをnode.jsに接続し、いくつかのイベントを発行するためにsocket.io-java-clientを使用しています。

サーバーでこれを実行しているので、ソケットスレッドを常に実行したくありません。

エミットが完了するとすぐに、ソケットを切断したいと思います。

私は試した

SocketIO socket=new SocketIO("http://IP:9001");
socket.emit("EVENT", "data");
socket.disconnect();

ただし、メッセージを送信する前にソケットを閉じているため、これは失敗します。

エミット成功のハンドラーはありますか? エミットが成功した後にソケットを閉じるにはどうすればよいですか?

4

1 に答える 1

0

メッセージをサーバーに送信した後、サーバーはその側から接続を切断できます。特定のメッセージを受信した場合にのみ、そのクライアントソケットを切断できます。
または、サーバーがさらに応答を送信し、クライアントがこの応答を受信したときに自分自身を閉じることができます。ただし、サーバーは、自分で閉じなかったアイドル状態のクライアントを閉じるために、自分で作成するタイムアウトを確保する必要があります。
この操作はサーバー側で行うことをお勧めします。このような決定でクライアント側を信頼しないでください。

クライアントは、タイムアウト後に追加で実行できます。
1 つのメッセージを送信するためだけに Socket.IO を使用し、メッセージの送信後にそのメッセージを閉じる場合、Socket.IO を使用する意味はありません。ハンドシェーク プロセスに基づくオーバーヘッドが発生するためです。送信するために HTTP リクエストのみを使用することを検討してください。サーバーへの単一のメッセージ。

于 2013-06-26T14:52:31.527 に答える