Authentication
WebSocket connections require authentication via a valid JWT token provided as a query parameter.Base URL
WebSocket Endpoints
Establish Connection
Create a persistent WebSocket connection.wss://
protocol instead:
Parameter | Required | Description |
---|---|---|
token | Yes | Valid JWT token for authentication |
Message Format
Messages exchanged over the WebSocket connection are JSON-formatted with the following structure:Client-to-Server Messages
Server-to-Client Messages
Message Types
Events
The WebSocket service broadcasts various events to connected clients:Event Type | Description | Example Data |
---|---|---|
notification | System notification | {"message": "New comment on your post", "level": "info"} |
chat_message | New chat message | {"conversation_id": "conv-123", "sender_id": "user-456", "content": "Hello there!"} |
status_update | Status change | {"entity_type": "task", "entity_id": "task-789", "status": "completed"} |
Commands
Clients can send commands to the server:Command Type | Description | Example Data |
---|---|---|
subscribe | Subscribe to a specific channel | {"channel": "conversation:conv-123"} |
unsubscribe | Unsubscribe from a channel | {"channel": "conversation:conv-123"} |
ping | Check connection | {} |
Error Handling
The server may send error messages in the following format:Error Code | Description |
---|---|
invalid_request | The message format is invalid |
unauthorized | Authentication failed or insufficient permissions |
subscription_failed | Failed to subscribe to the requested channel |
internal_error | Server-side error |
Connection Example
JavaScript Client Example
Reconnection Strategy
Itβs recommended to implement a reconnection strategy in your client application to handle unexpected disconnections:- Start with a small delay (e.g., 1 second)
- Use exponential backoff with jitter to increase the delay between reconnection attempts
- Set a maximum retry limit or maximum delay
- Reset the delay when a successful connection is established
Security Considerations
- WebSocket connections are authenticated using JWT tokens
- Tokens should be kept secret and not shared
- Connections will be terminated when tokens expire
- The server may implement rate limiting to prevent abuse
Implementation Notes
- The WebSocket service uses the standard WebSocket protocol (RFC 6455)
- Messages are exchanged in JSON format
- The service supports multiple concurrent connections
- Channel subscriptions allow for efficient message filtering
- Clients should handle reconnection logic on their side