0

私のサーブレット/jsp アプリケーションでは、ユーザー名、パスワード、user_role がデータベースに保存されており、アプリはポート 8080 で実行されています。リアルタイム アプリケーションを実装するために、ポート 8081 で実行されているノード js アプリケーションがあります。ノードjsアプリでexpressとsocket.ioを使用しています。両方のアプリケーションが Windows Server 2008 で実行されています。

私のノードjsアプリでは、次のコードを実行する前に:

 io.sockets.on('connection', function (socket) {
     //check if user is logged in jsp app then do following
     socket.emit('news', { hello: 'world' });
 });

これを達成するにはどうすればよいですか、またはノード js からサーブレット/jsp のセッションにアクセスするにはどうすればよいですか? Windows プラットフォームでのみ機能するソリューションを提案してください。

4

1 に答える 1

0

サーバー/jsp アプリケーションに認証トークンを作成させ、このトークンを最初のクライアント イベントとして socket.io サーバーに送信します。

つまり、接続時に socket.io クライアントを認証できないということです。socket.io クライアントは、最初にこのトークンを送信する必要があります。socket.io サーバーはこのトークンをチェックし、クライアント接続オブジェクトに認証済みフラグを設定します。

フロー:

  • ブラウザはサーバー/jsp からトークンを要求します
  • server/jsp は、ユーザーがログインしているかどうかを確認し、ログインしている場合は、userId を使用して (秘密鍵を使用して) セキュア トークンを作成します。
  • ブラウザが socket.io サーバーに接続します
  • ブラウザがトークンを socket.io サーバーに送信する
  • socket.io サーバーは、トークンが有効かどうかをチェックします (公開鍵を使用してチェックします)。
  • socket.io は、接続オブジェクトに認証済みフラグを設定します。

...

  • socket.io サーバーは、認証済みフラグが設定された接続に対してのみイベントを発行します。
于 2013-07-04T08:59:46.060 に答える