2.5 KiB
tags | created | |||
---|---|---|---|---|
|
Monday, April 14, 2025 |
Web sockets
The WebSocket protocol provides a mechanism whereby data can continuously be shared between a client and a server in both directions.
This contrasts with standard HTTP whereby a server can only send data when a client specifically requests it and the communication channel is closed until such a request is made.
Whereas HTTP works on the basis of a client-server architecture, WebSocket is an event-driven architecture. Under an event-driven architecture, events trigger data flows rather than client requests.
Examples of its application include instant messaging platforms where messages are sent in real time, stock trading platforms, social media feeds and cloud-based collaboration tools (e.g. Google Sheets). Hence WebSocket is best suited to applications where the immediacy and concurrency of server resolution is a factor.
WebSocket was borne out of the limitations of HTTP. Prior to the creation of the WebSocket protocol, event-driven communication was attempted over HTTP through "long polling". Basically, the server sends a request to the server and if the response is not available, the server holds the request until the response is available and then returns it. Then, after an interval, the client sends the same request again and the process repeats. This is obviously inefficient.
WebSocket is an Application Layer protocol just like HTTP. HTTP is used as the initial connection mechanism but the resulting TCP connection is kept alive after the HTTP request completes, establishing the web socket. The standard HTTP handshake takes place but the HTTP request will include an 'Upgrade' header that indicates the client wants to establish a socket. The presence of this header results in the protocol being upgraded from HTTP to WebSocket.
This is possible because both HTTP and WebSocket are Application Layer protocols that run on top of the same TCP connection.
Encryption
In the case of moving from HTTPS to WebSocket, the encryption of the former protocol is maintained. Although there is a protocol switch, the data is still being transferred on the same 443 port (used for HTTPS). Although the protocol has changed at the Application Layer, the encryption established at the TCP Layer is still in place.
The HTTPS analog for WebSocket is WebSocketSecure (WSS). Thus HTTPS/WSS is the secure version of the HTTP/WS protocols.