On the Internet, there are strict rules for transferring data between a client and a server (the TCP/IP protocol stack), but there are no hard and fast rules about how to establish a connection and how to structure the message being transmitted. And this affects the speed.
WebSocket uses an opening handshake to establish a connection. It lies in the fact that the client precedes the sending / receiving of messages with a preliminary request, in which the client and the server “agree” to use web sockets. This is the “handshake.” The structure of such a request is similar to HTTP but slightly different from it. Then the client and server exchange data already within the framework of this connection.
In addition, web sockets have additional extensions that complement and extend the protocol. For example, there is an extension for data compression. Or the ability to transfer data in SOAP, WAMP, or XMPP protocol format. For these extensions to work, they must be supported by both the server and the client.
When To Use And Not To Use WebSocket
WebSocket is suitable when you need real-time data updates and deliver messages to the client. Some examples for WebSocket:
- trading applications with real-time volatility of quotes, prices: sales platforms, exchanges;
- and gaming applications ;
- chats, including on support sites;
- push notifications;
- social networks;
- device management in IoT (WAMP subprotocol is used).
When you need to get immutable data that is only retrieved once for your application to process, it’s better to use the HTTP protocol rather than WebSocket. It can be, for example, a page with an article. Once published, an essay doesn’t change much, so it doesn’t make sense to use a persistent connection to display it.
Also, HTTP protocol is preferable if we don’t want to keep the connection or reuse one data connection for a particular time. These are, for example, situations when the server must return all the data for the form in one response.
Things To Remember About WebSocket
- WebSocket is a bi-directional communication protocol between a client (browser) and a server that allows real-time messaging.
- It establishes one connection and transmits the response to a single request when it appears – without additional requests, like the HTTP protocol.
- Requests and responses come without delays and network load.
- Suitable for marketplaces, exchanges, gaming applications, chats, social networks, Internet of things, push notifications.