Build a WebSocket channel
Follow the WebSocket upgrade
Trace the HTTP handshake into a persistent ws or wss connection and understand what infrastructure must support.
9 minute lesson
Before choosing a tool or writing more code, make the requirement concrete. The operator console uses wss: in production, and the reverse proxy must preserve the upgrade headers and idle connection.
A WebSocket begins as an HTTP request asking to upgrade protocols, then becomes a framed bidirectional connection. The useful target is not encyclopedic coverage. Make one deliberate choice, observe its consequences, and know which requirement would make you revise it.
A common failure is to debug only the JavaScript client when a proxy or platform rejects the upgrade. The happy path may still work, which makes the mistake easy to miss. inspect the handshake, negotiated protocol, response status, proxy configuration, and TLS boundary as one path. Keep the first version small enough that every important input and output remains visible.
This supports the module goal: Build a bidirectional operator channel with explicit messages, bounded queues, and observable connection state. Capture the request, command, trace, screenshot, test result, or other evidence that proves the result.
Capture a successful and failed handshake, then identify the exact layer that changed the result. Change one condition on purpose, predict the result, and compare the prediction with what actually happened.
Lesson completed