2017-05-09 4 views
7

gcp http(s)ロードバランサがWebソケットをサポートするようになったことに気付きました。私はそれを試しに行っていくつかの問題を抱えています。私は、クラウドCDNと単純なURLマップなしのバックエンド(Node.js)を使って、わざとhttpsロードバランサをセットアップしています。私はwebsocket接続を行うために行くとき、私は正常なアップグレードの応答を得るが、私はサーバーにフレームを送信するために行く、彼らは決して受信されません。サーバーは、フレームをクライアントに送り返すことができます。ロードバランサは、接続がアップグレードされたことを知らないため、クライアントからのデータの送信を許可しません。GCP HTTPロードバランサ - Websocketがアップグレードを取得しているが、クライアントからのフレームがありません

httpsロードバランサのログを見ると、101 Switching Protocolsの応答が表示され、statusDetailsは通常のhttp要求と同じように"client_disconnected_after_partial_response"です。

ご協力いただければ幸いです。

+0

問題が見つかりましたか?私は同じ問題を経験しています。 –

答えて

4

調査の結果、GCPロードバランサがGCP CDNを通過しているときに、クライアントメッセージがバックエンドに送信されることはありません。

"websocket-prototype"という新しいバックエンドで必要だったバックエンド設定を複製し、websocketプロトタイプの "use cdn"設定を変更することでこれを回避しました。最後に、WebSocketサーバーへのパスをCDNなしの構成にマップしました。

enter image description here

+0

ああ、それは理にかなっています。素晴らしい発見!私はwebsocket接続のためだけに別のバックエンドを作成しなければならないが、SSlロードバランサ(Websocket用に別のドメインがある)よりも優れていると思う。うまくいけば、クラウドCDNのサポートを得ることができます。 –

+1

私はこれらの変更を私のサイトに追加したところ、彼らはきれいに働きました。変更が行われるまでにはしばらく時間がかかりましたので、最初は少し気になりました。リクエストのタイムアウトを9999999秒のようなものに変更しなければならないことに注意してください。そうしないと、接続を途中で閉じることになります(たとえping/pongを送信しても、 –

関連する問題