Fix error about non-empty Sec-WebSocket-Protocol header
When you encounter this problem about
WebSocket connection to
'wss://<address>/live' failed: Error during WebSocket
handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but
no response was received, here is an article on how to fix this
According to the error message, we know that the WebSocket client sent a request with non-empty ‘Sec-WebSocket-Protocol’ header as shown below:
Therefore, let’s find more about the
field. And the header field definition can be found in RFC 6455.
It is used in the WebSocket opening handshake. It is sent from the client to the server and back from the server to the client to confirm the subprotocol of the connection. This enables scripts to both select a subprotocol and be sure that the server agreed to serve that subprotocol.
Now we know that this problem is caused by the backend server not
agreeing to serve the subprotocol (Known by above picture it is
x-wss). Therefore, we should add the
header field to the response in our server side, and the value
should be the same with the client. Otherwise, the connection will