Починається як звичайний HTTP-запит з заголовком Upgrade: websocket. Сервер підтверджує апгрейд — і TCP-з'єднання залишається відкритим. Обидві сторони можуть надсилати повідомлення в будь-який час без накладних витрат нового HTTP-запиту.
Node.js: Socket.io, ws. PHP: Ratchet, Swoole, ReactPHP. Go: gorilla/websocket. Python: websockets, FastAPI WebSocket. Для продакшну часто використовують окремий WebSocket-сервер поряд з основним HTTP-застосунком.