1

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です-アプリケーションが単一のスレッドで実行されている場合、期待どおりに動作します。

4

1 に答える 1

0

問題の解決策を探している人がいる場合は、Redis サーバーをセットアップし、socket.io を node.js 内で使用するように構成することで、これを解決しました。

于 2013-05-26T03:36:10.857 に答える