web-dev-qa-db-ja.com

AWS Elastic Beanstalkでのsocket.ioを使用したWebSocket

AWS Elastic Beanstalkでsocket.ioを使用してwebsocketサーバーをセットアップしようとしています。 /socket.io/1/?t=xxxxへの最初のリクエストを実行しましたが、websocketハンドシェイクは次のエラーで失敗します:

WebSocket connection to 'ws://xxxxxx.elasticbeanstalk.com/socket.io/1/websocket/a4DTCN2BeJZuiSaphVyz' failed: Unexpected response code: 502 

グーグルで調べてエラー502(Bad Gateway)を見ると、nginx-proxyと関係があるようです。では、nginxをWebSocketで動作するように構成するにはどうすればよいですか?

AWSのドキュメントで、WebSocketのセットアップについて何も見つかりません。

29
funparko

nginxの設定の問題を解決することもできますが、WebSocketのみを使用している場合は、すべてのプロキシをオフにして直接接続する方が簡単です。

これは、Elastic Beanstalkダッシュボードのアプリ環境下にあります。右側に「アクション」とマークされたドロップダウンボタンがあります。 「構成の編集/ロード」を選択します

enter image description here

29
Adam

Ditch-nginxアプローチには大きな欠点があります。 httpsをノードに移動し、socket.io呼び出しにも移動する必要があります。ノードよりもサーバー構成でhttpsを管理する方がはるかに簡単です。

Httpsが必要ない場合は、プロキシをダンプしてノードに直接アクセスすることをお勧めします。

3
Michael Draper

Socket.ioのデフォルトはポート8080です。AWS管理> EC2>セキュリティグループに「インバウンド>カスタムTCPルール」」を追加して、EC2セキュリティグループでポート8080が有効になっていることを確認してください。

3
jp_inc