HTTP and WebSocket both are communication protocols used in client-server communication.
HTTP protocol: HTTP is unidirectional where the client sends the request and the server sends the response. Let’s take an example when a user sends a request to the server this request goes in the form of HTTP or HTTPS, after receiving a request server send the response to the client, each request is associated with a corresponding response, after sending the response the connection gets closed, each HTTP or HTTPS request establish the new connection to the server every time and after getting the response the connection gets terminated by itself.
HTTP is stateless protocol runs on the top of TCP which is a connection-oriented protocol it guarantees the delivery of data packet transfer using the three-way handshaking methods and re-transmit the lost packets.
HTTP can run on the top of any reliable connection-oriented protocol such as TCP, SCTP. When a client sends HTTP request to the server, a TCP connection is open between the client and server and after getting the response the TCP connection gets terminated, each HTTP request open separate TCP connection to the server, for e.g. if client send 10 requests to the server the 10 separate HTTP connection will be opened. and get closed after getting the response/fallback.
HTTP message information encoded in ASCII, each HTTP request message composed HTTP protocol version(HTTP/1.1, HTTP/2), HTTP methods (GET/POST etc.), HTTP headers (content type, content length), host information, etc. and the body which contain the actual message which is being transferred to the server. HTTP headers varied from 200 bytes to 2 KB in size, the common size of HTTP header is 700-800 bytes. When web application uses more cookies and other tools at client-side that expend storage features of agent it reduces the HTTP header payload.
WebSocket: WebSocket is bidirectional, a full-duplex protocol that is used in the same scenario of client-server communication, unlike HTTP it starts from ws:// or wss://. It is a stateful protocol, which means the connection between client and server will keep alive until it is terminated by either party (client or server). after closing the connection by either of the client and server, the connection is terminated from both the end.
Let’s take an example of client-server communication, there is client which is a web browser and a server, whenever we initiate the connection between client and server, the client-server made the handshaking and decide to create a new connection and this connection will keep alive until terminated by any of them. When the connection is established and alive the communication takes place using the same connection channel until it is terminated.
This is how after client-server handshaking, the client-server decide for a new connection to keep it alive, this new connection will be known as WebSocket. Once the communication link establishment and the connection are opened, message exchange will take place in bidirectional mode until connection persists between client-server. If anyone of them (client-server) dies or decide to close the connection is closed by both of the party. The way in which socket works it slightly different from how HTTP works, the status code 101 denotes the switching protocol in WebSocket.
When can a web socket be used:
- Real-time web application: Real-time web application uses a web socket to show the data at the client end, which is continuously being sent by the backend server. In WebSocket, data is continuously pushed/transmitted into the same connection which is already open, that is why web socket is faster and improves the application performance.
For e.g. in the trading website or bitcoin trading, that is the most volatile thing which is happening over there, for displaying the price fluctuation and movement data is continuously pushed by the backend server to the client end by using the web socket channel.
- Gaming application: In a Gaming application, you might focus on that, data is continuously receiving by the server and without refreshing the UI, it will take effect on the screen, UI gets automatically refreshed without even establishing the new connection, so it is very helpful in a Gaming application.
- Chat application: Chat application uses WebSocket to stablish the connection only once for exchange, publishing and broadcasting the message among the subscriber. it reuses the same WebSocket connection, for sending and receiving the message and one to one message transfer.
When not to use WebSocket: WebSocket can be used if we want any real-time updated or continuous streams of data which is being transmitted over the network. If we want to fetch old data, or want to get the data only once to process it with an application we should go with HTTP protocol, old data which is not required very frequently or fetched only once can be query by the simple HTTP request, so in this scenario better not use WebSocket.
Note: RESTful web services are sufficient to get the data from the server if we are loading the data only once.
Differences between HTTP and WebSocket Connection:
|WebSocket Connection||HTTP Connection|
|WebSocket is a bidirectional communication protocol that can send the data from the client to the server or from the server to the client by reusing the established connection channel. The connection is kept alive until terminated by either the client or the server.||The HTTP protocol is unidirectional protocol works on the top of TCP protocol which is a connection-oriented transport layer protocol, we can create the connection by using HTTP request methods after getting the response HTTP connection get closed.|
|Almost all the real-time application like (trading, monitoring, notification) services uses WebSocket to receiving the data on a single communication channel.||Simple RESTful application uses HTTP protocol which is stateless.|
|All the frequently updated applications used WebSocket because it is faster than HTTP Connection.||When we do not want to retain a connection for a particular amount of time or reusing the single connection for transmitting the data, HTTP connection is slower than the WebSocket..|
Note: Depending on your project you have to choose where it will be WebSocket or HTTP Connection.
- Web-Socket in NodeJS
- Socket Programming in C/C++
- Node.js socket.ref() Method
- Node.js socket.address() Method
- Node.js socket.setSendBufferSize() Method
- Node.js socket.send() Method
- Node.js socket.getSendBufferSize() Method
- Node.js socket.getRecvBufferSize() Method
- Node.js socket.addMembership() Method
- Node.js socket.setRecvBufferSize() Method
- Node.js socket.connect() Method
- Node.js socket.bind() Method
- Node.js socket.remoteAddress() Method
- Creating Socket.IO Server using Express Generator
- How to Configure Socket.IO with Demo-Chat App in Node.js ?
- Socket Programming in C/C++: Handling multiple clients on server without multi threading
- HTTP | PUT
- HTTP headers | Tk
- HTTP headers | DNT
- HTTP headers
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.