WebSocket is a protocol with two way HTTP connection between client and server. Communication happened over a single socket layer,
Normal Web applications, the client initiates the request and server serve the response. Here communication is over HTTP protocol, Once the content is served on the page, no updated content will be served until the page is refreshed.
Think of following use cases where real-time communication required in Facebook Chat, Live Cricket scores, Stock Quotes News feed Online games Real-time applications communications For example, Now think of live Cricket based score websites/ Facebook chat sites, the data displayed on live cricket score is very frequent. The live score once displayed might be outdated. Continues refresh is required to get the newly updated score. This might be a poor user experience For real-time web apps communication, Traditional client-server communication is not used as this has a poor user experience.
Solutions to this problem are having two options 1.Polling 2.Long Polling
1. The client sends a request to the server, HTTP connection is opened 2. The server serves the response over HTTP connection and server closes this connection 3. step1 and step2 happen at frequent intervals for getting update content at frequent intervals for every request, HTTP connection is created Once data served, the connection will be closed.
1. More bandwidth is required if there is no content update 2. Connection open/close is an expensive operation for every request during interval time.
1. This method is asynchronous polling 2. The server keeps the connection open until the configured period timeout is reached
When data is huge, it becomes polling.
Oneway communication - Client sends a request to the server, the server sends the responses
Two-way communication ie duplex channel
The server can not push to client
Core feature and Server push is possible
Cache inbuilt support
Cache is not possible
All clients and browsers support there
Only Modern browsers supports
All technologies support available
Only Modern languages support available
WebSocket support in all popular browsers. Following libraries have support for implementing WebSocket implementation