0

Java Chromium Embedded Framework (JCEF)に基づいて独自にカスタマイズした Web ブラウザーがあり、内部で WebSocket サーバーを実行しているとします。

これで、CustomWebBrowser で実行されている Web アプリは、WebSocket を使用して内部 WebSocket サーバーに接続できるようになりました。

ただし、他の Websocket クライアント (Websocket を使用する別のブラウザーまたはデスクトップ アプリ) を内部 WebSocket サーバーに接続したくありません。

これを行う方法の 1 つは、次の手順に従うことです。

  1. CustomWebBrowser でシークレットを生成し、そのシークレットをJava-JavaScript ブリッジを使用して JCEF から Web アプリに送信します。
  2. Web アプリは、ハンドシェイク中にそのシークレットを内部 WebSocket サーバーに送信します。次のようになります。

    var ws = new WebSocket(myURL, protocols, mySecret);

  3. 内部 WebSocket サーバーは、手順 1 でシークレットを生成して送信した CustomBrowser を使用してシークレットを検証できます。

  4. シークレットが検証された場合、ハンドシェイクは正常に完了します。それ以外の場合、websocket 接続は拒否されます。

私の質問は、websocket ハンドシェイク中にカスタム データを送信することは可能ですか?

4

1 に答える 1

3

はい、WebSocketハンドシェイクは、カスタマイズされた情報を含む任意のヘッダーを追加できる、通常の外観の HTTP 要求/応答を使用します。

ただし、WebSocket クライアント/サーバーのライブラリでは、それが許可されていない場合があります。ただし、クライアント側から接続を開始するときにurl、いつでも情報を埋め込むことができます。protocol

于 2015-11-05T16:06:28.337 に答える