WebSocket

Published on: September 07, 2025

Tags: #websocket #web-services


WebSocket Handshake and Data Flow

sequenceDiagram
    participant Client
    participant Server

    Note over Client, Server: 1. HTTP GET Request for WebSocket Upgrade
    Client->>Server: GET /chat HTTP/1.1\nHost: server.example.com\nUpgrade: websocket\nConnection: Upgrade\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\nSec-WebSocket-Version: 13

    Note over Client, Server: 2. Server Upgrades Connection
    Server-->>Client: HTTP/1.1 101 Switching Protocols\nUpgrade: websocket\nConnection: Upgrade\nSec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

    Note over Client, Server: 3. WebSocket Connection Established
    rect rgb(240, 240, 240)
        Note over Client, Server: Bidirectional Communication
        Client->>Server: Hello, Server!
        Server-->>Client: Hello, Client!
        Client->>Server: How are you?
        Server-->>Client: I am fine, thank you!
    end

    Note over Client, Server: 4. Closing the Connection
    Client->>Server: Close Connection
    Server-->>Client: Acknowledge Close

WebSocket State Diagram

stateDiagram-v2
    [*] --> CONNECTING
    CONNECTING --> OPEN: onopen
    OPEN --> MESSAGE_RECEIVED: onmessage
    MESSAGE_RECEIVED --> OPEN
    OPEN --> CLOSING: close()
    CLOSING --> CLOSED: onclose
    CONNECTING --> CLOSED: onerror
    OPEN --> CLOSED: onerror

WebSocket Connection Diagram

graph TD
    A[Client Initiates Connection] --> B{Server Receives Request};
    B --> C{Upgrade to WebSocket?};
    C -- Yes --> D[Handshake Successful];
    C -- No --> E[HTTP Response];
    D --> F[WebSocket Connection Established];
    F --> G{Bidirectional Communication};
    G -- Client Sends Message --> H[Server Processes Message];
    H --> G;
    G -- Server Sends Message --> I[Client Processes Message];
    I --> G;
    G -- Connection Closed --> J[Connection Terminated];

Share this post

Share on X  •  Share on LinkedIn  •  Share via Email