WebSocket provides a bidirectional mechanism between web browsers and web servers for sending messages.
As opposed to HTTP, where only the client can send a request to the server; WebSocket enables each side in the connection to send messages without any need to wait for past responses.
WebSocket starts its life as a specialized HTTP request that validates if the server is capable of supporting WebSocket or not. If the response is positive, then the WebSocket “hijacks” the HTTP connection and turns it into a WebSocket connection.
WebSocket can also be used on top of TLS, creating a secured WebSocket connection.
Due to the nature of WebRTC, which requires both ends to be capable of receiving and sending messages at all times, many of the WebRTC services opt for the use of WebSocket as the transport of their signaling protocol.