HTTP is a request-response protocol. It's great for loading pages, but poor for real-time interactivity. If you're building a chat app, a live dashboard, or a collaborative editor, you need the bi-directional power of WebSockets.
The Handshake
A WebSocket connection begins as a standard HTTP request with an "Upgrade" header. If the server supports the protocol, it completes the handshake, and the connection shifts from HTTP to a persistent, full-duplex TCP socket.
Full Duplex Communication
Unlike HTTP polling or Long Polling, where the client must repeatedly ask the server for updates, WebSockets allow either the client or the server to send data at any time. This drastically reduces overhead and latency.
Security and the 'wss' Protocol
Always use wss:// (WebSocket Secure) in production. This ensures that data is encrypted using TLS, protecting it from man-in-the-middle attacks and ensuring that proxies don't accidentally mangle your binary data.