3

これは、私が多くの VMware 用語を使用していても、JS の質問として扱われる可能性があります。

Websocket を使用して、vSphere によってホストされ、vCloud Director によって管理されている VM に接続しています。

vCloud Director API によって、セキュリティ チケットを取得できます。これは に似ていcst-xlIs3pP+C/oL/tEgwqvBHv6cBFnTT//VfLNh2kwOjOJItTwfEmVmePhjmJHfV0CisjxqaiQ9AJCNwvfu1zpr1dptvANS9NoIk4TCto7gRsM79R633SS2cIEuvXUAs7KzPoqdjYnSM8BcCttHLz8UbaPPYhjxx1MS2sCfUYovjqtGa9QwkZVBPxrfuPHsJNn3XchTO2h1pm/c/kim2kyu3R3worzcTSZsjGIk+QMWdvfEXc/PNYUGASA0EmP/16IMCltnODY9gQ9ddV0LfXeNKw==-IB8jmkQf1OtvVXZsqoO/cT0Ou93Dx7JlMOTGdQ==--tp-49:4A:E1:31:6B:95:39:AD:47:6D:63:F6:1E:72:F7:D1:B5:65:36:00--ます。

したがって、Websocket の URL は次のようになります。902 は"wss://10.160.122.169/902;cst-xlIs3pP+C/oL/tEgwqvBHv6cBFnTT//VfLNh2kwOjOJItTwfEmVmePhjmJHfV0CisjxqaiQ9AJCNwvfu1zpr1dptvANS9NoIk4TCto7gRsM79R633SS2cIEuvXUAs7KzPoqdjYnSM8BcCttHLz8UbaPPYhjxx1MS2sCfUYovjqtGa9QwkZVBPxrfuPHsJNn3XchTO2h1pm/c/kim2kyu3R3worzcTSZsjGIk+QMWdvfEXc/PNYUGASA0EmP/16IMCltnODY9gQ9ddV0LfXeNKw==-IB8jmkQf1OtvVXZsqoO/cT0Ou93Dx7JlMOTGdQ==--tp-49:4A:E1:31:6B:95:39:AD:47:6D:63:F6:1E:72:F7:D1:B5:65:36:00--"vCloud Director によって返されるポートです。

この Websocket を作成した後、onopen関数が呼び出されましたが、これは接続が確立されたことを意味しますか? ただし、1 ~ 2 秒後に Websocketoncloseが呼び出されます。これは、サーバーが接続を閉じているということですか? イベントコードは1006...

この問題をさらにデバッグするにはどうすればよいですか?

4

1 に答える 1

3

クローズ コード 1006 は、Web ソケット プロトコル クローズ フレームを受信せずに、ソケットが「ドロップ」(TCP 切断) されたことを意味します ( https://www.rfc-editor.org/rfc/rfc6455セクション 7.1.5) 。

これが発生する理由はいくつもあります。ネットワーク インフラストラクチャがむらがある場合や、Web ソケット プロトコル レイヤーの一部の不安定な実装が原因である場合もあります。

ただし、SSL 接続を使用しているため、別の可能性として、使用中の証明書の不一致があります。おそらく、サーバー側の証明書が自己署名されていて、接続を開始するブラウザーにインストールしていない場合 (または、何らかの内部 CA を使用しており、その CA が認識されていない場合)。残念ながら、ほとんどのブラウザーは、Web ソケットで貧弱な証明書に遭遇した場合、多くの情報を提供しません。(https とは異なり) 「この証明書を信頼しますか?」というアラートはありません。

また、チケットを URL エンコードする必要があるかどうかも確認する必要があります。その文字列の「=」文字を %3d (URL エンコード) に置き換える必要がある可能性があります。サーバー側のWebソケットハンドラーがそれを必要とするかどうかは正直思い出せませんが。

于 2015-05-23T12:33:39.147 に答える