===== WebSocket API Introduction ===== The WebSocket API provides a high-performance, low-latency communication channel for real-time trading data and order execution. This section introduces the key technologies used in the API: **WebSockets** and **Google Protocol Buffers (Protobuf)**. ==== WebSockets ==== WebSockets establish a persistent, full-duplex connection between the client and server, allowing for continuous bi-directional message exchange. This ensures minimal latency, making it ideal for market data feeds and order updates. **Key Advantages:** * Persistent connection reduces handshake overhead * Low-latency, real-time data exchange * Efficient bandwidth usage compared to REST APIs ==== Google Protocol Buffers (Protobuf) ==== The API utilizes Protobuf for efficient, compact, and high-speed message serialization. Unlike JSON or XML, Protobuf messages are smaller and faster to parse, making them well-suited for high-frequency trading applications. **Why Protobuf?** * **Compact Encoding:** Reduces message size for faster transmission * **High Performance:** Faster serialization/deserialization than JSON * **Schema Evolution:** Backward-compatible changes allow for future expansion without breaking existing clients ==== Communication Model ==== The API follows a structured messaging approach: * **Client Messages:** Requests sent from clients to the server (e.g., order submission, subscription requests) * **Server Messages:** Responses and real-time updates sent from the server (e.g., trade confirmations, market data) ==== Message Structure Overview ==== All messages are wrapped within a top-level client or server message envelope. This structure ensures extensibility and consistency across different message types. **Example Envelope:** ``` message ClientMessage { oneof payload { SubscribeRequest subscribe = 1; OrderRequest order = 2; } } message ServerMessage { oneof payload { MarketUpdate market_data = 1; OrderResponse order_response = 2; } } ``` This design enables efficient message parsing while maintaining flexibility. ==== Next Steps ==== Continue to the **[Connecting and Authenticating](developers:websocket:connecting)** section to learn how to establish a WebSocket connection and authenticate your session.