There are different ways to transfer data from a browser or application to servers and vice versa.
The rules of these methods are described in particular protocols. Some are used where there is no need to exchange data quickly, for example, on information sites, others where speed is essential, particularly in the Internet of things.
Together with experts from Git in Sky, we decided to talk about one of these technologies – the Web Socket (WebSocket) data transfer protocol – and explain how it works and its advantages using simple examples.
To Understand The WebSocket Protocol, let’s See How The Internet Was Before It
Previously, to receive new information from the server, the client (browser) had to send a request, and the server sent a response. Without demand, there was no response- a page update – the server could not send anything itself. For example, the user received a message or pushed notification. For the client to know about this, it must poll the server at some intervals for new data.
Another option is for the client to learn about new data only when the user interacts with the site: navigate to other pages, manually refresh a tab, or reopen the site. As a rule, the first method was used: the client, for example, sent a request to the server every 5 seconds; if there was something new, the server gave this information in response.
There were drawbacks to this approach:
- Extra network load. The client must constantly send requests to the server, even if there is no new information.
- The overhead of establishing a new connection on every request/response. This also consumes some time. Looking ahead, we note that in WebSocket, the connection is established once and kept open, so there is no additional overhead.
- Low data update rate. The client cannot receive the data as soon as they appear on the server. New data is sent to the client only after receiving the request. If it was essential to get the data as soon as possible, it was possible to access the server more often, for example, once every 0.5 seconds. However, this led to an additional load on the network and the server, conducting and processing many requests.
On the other hand, Web sockets allow you to establish a permanent connection, and now the server can send new data to the client without waiting for the request. This interactivity eliminates the above disadvantages. To see the benefits of the WebSocket protocol, let’s see how it works by comparing it to the HTTP protocol.
How WebSocket Works And How It Differs From HTTP
The HTTP protocol is unidirectional. After the request-response cycle, the connection is closed, and any subsequent request each time establishes a new connection to the server: how many requests, so many connections. The data transfer process occurs with some delays because there is an overhead for establishing a new relationship with each request/response and network and server load due to the abundance of periodic requests. The HTTP protocol is now used less and less; it is being replaced by HTTPS. This is not a separate protocol but an add-on to HTTP that allows you to encrypt data.
The WebSocket protocol is bidirectional, full-duplex, which means that it can both receive and transmit information simultaneously. The WebSocket does this multiple times in a single open connection. Such a connection has a higher speed than HTTP.
Web sockets can also encrypt transmitted data; for this, an add-on is used over the WSS protocol. If the transmitted data is not encrypted, it becomes an object to attract such threats as unauthorized access to the client by third parties and the use of malware. Unique add-ons of data transfer protocols encode information on the sender’s side and decode it on the recipient’s side, leaving it encrypted for any intermediaries. This achieves a secure transport layer.
For clarity, we will show the differences between HTTP and WebSocket technologies, using the example of their work in chats.
To allow users to receive new messages the browser periodically polls the server: Are there any new messages for the user? Each such request established a new connection and created an unnecessary network load.
Web sockets allow you to establish one connection, and the server itself will send new messages when they appear.