JavaScriptフロントエンドを使用して、node.jsをsocket.io(https
接続サーバーオブジェクトを介して、オプションで接続するクライアント)を備えたサーバーとして使用しようとしています。secure: true
ログイン試行が失敗した場合、サーバー上で次のように呼び出しています。
socket.emit('unauthorized');
socket.disconnect();
クライアント側には次のものがあります。
this.Socket = io.connect(server, { secure: true });
this.Socket.on('disconnect', this.Socket_Disconnect);
this.Socket.on('unauthorized', this.Socket_Unauthorized);
切断イベントが発生するのを確認できます (['booted']
引数を に渡すかどうかに関係なく、引数が設定されていますsocket.disconnect()
が、無許可のイベントは発生しません。このメッセージを間違った方法で渡そうとしていますか?
disconnect
ここでの理論的根拠は、次のようなさまざまな種類のイベントを送信できるようにしたいということです。
logout
- ユーザーがログインするまで、クライアントは接続の試行を停止する必要があります
server reboot
- クライアントは、接続が完了するまで接続を再試行する必要があります
クライアントがサーバーによって切断された理由をクライアント側で伝える必要があります。少なくとも、呼び出す前にメッセージが送信されたことを確認する方法はありますsocket.disconnect()
か?
編集:これはnode.jsコードに固有のようcluster
です-アプリケーションが単一のスレッドで実行されている場合、期待どおりに動作します。