funparko
funparko

Reputation: 303

Websockets with socket.io on AWS Elastic Beanstalk

I'm trying to setup a websocket-server with socket.io on AWS Elastic Beanstalk. Got the initial request to /socket.io/1/?t=xxxx up and running but the websocket handshake fails with this error:

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

From googling and looking at the error 502 (Bad Gateway) it seems to have something to do with the nginx-proxy. So how do I configure the nginx to work with websockets?

Can't find anything in AWS documentation about setting up for websockets.

Upvotes: 30

Views: 17188

Answers (4)

Roy Lee
Roy Lee

Reputation: 1

This error can be fixed by adding a new listener to the load balancer. You can add a new listener with TCP protocol like below.

enter image description here

Upvotes: 0

jp_inc
jp_inc

Reputation: 345

Socket.io defaults to port 8080. Make sure port 8080 is enabled on your EC2 Security Group by adding a "Inbound > Custom TCP Rule" in the AWS Admin > EC2 > Security Groups.

Upvotes: 4

Michael Draper
Michael Draper

Reputation: 1958

There is a significant disadvantage with the ditch-nginx approach. You will have to move https into node and also to your socket.io calls. It's much easier to manage https in the server configuration rather than in node.

If you don't need https I suggest dumping the proxy and just going directly to the node.

Upvotes: 4

Adam
Adam

Reputation: 891

you could try to go through the trouble of configuring nginx, but if you are only using websockets, it would be easier to turn off all proxys and directly connect.

this is under your app environment in the elastic beanstalk dashboard. There's a drop down button on the right marked "Actions". Select "Edit/Load Configuration"

enter image description here

Upvotes: 28

Related Questions