How does WebSockets work?
Let's see how the WebSockets protocol works over HTTP. For a client to establish a connection to a web server using WebSockets, it first performs a WebSocket handshake request, which is very similar to a normal HTTP request, but with the Upgrade
header, as follows:
GET /path/to/endpoint HTTP/1.1 Host: localhost Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg== Origin: http://localhost Sec-WebSocket-Version: 13
As you can see, the upgrade header, with some other WebSockets-related headers, is used to perform what's called a WebSockets handshake. The handshake request asks the server to use the WebSockets protocol.
If the web server supports the WebSockets protocol on this path, it should respond with the following handshake response:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: K7DJLdLooIwIG/MOpvWFB3y3FE8=
The connection switches to a bi-directional type, and the connection lasts...