6
votes

I'm trying to get a .NET Core application running on elastic beanstalk to receive websockets connections from javascript in the browser.

When I test my client and server outside AWS on my local machine I am able to establish a websocket connection betwen the two. But when I deploy the server to elastic beanstalk I get the following error

WebSocket connection to 'ws://52.62.253.144/' failed: Error during WebSocket handshake: 'Sec-WebSocket-Accept' header is missing

The server replies with a 101 Switching Protocols, so I know the server is trying to establish the connection, but the Sec-WebSocket-Accept header is missing. When testing locally, this header is present.

Is it possible elastic beanstalk is stripping the Sec-WebSocket-Accept from the response? It is currently configured in a 'Single Instance' scenario, not autoscaling.

Thanks in advance

3
got this same issue now. hope somebody can helpRashid

3 Answers

2
votes

Same thing happened to me in a Tomcat/Java project, it was finally fixed by switching the ELB protocols to TCP/SSL. The official documentation shows you how to switch them, can you try this and let me know.

0
votes

AWS do not accept unserscores(_) in headders, while we can use (-), So Remove underscores from the header variables, example:- header_var_val = "some value" replace it with headervarval = "some value". It works for me.

0
votes

It might not work for everyone but I had the same issue and I realized that a large amount of cookies were forwarded because I used the same domain for website and websocket.

When I flushed the cookies the Sec-WebSocket-Accept header came back.

It would be interesting to know if it is because of the header length or because of a bad character in the cookies.

EDIT

It seems that the length is the issue. The best practice is to use separate domains for websocket and site because according to the following question it is not possible to disable cookies in the header while creating a websocket.

How to disable cookies in Header while creating websocket?