WebSockets ========== The channel endpoint is ``GET /api/channels/{channel_id}/ws`` and the conversation endpoint is ``GET /api/conversations/{conversation_id}/ws``. Both require authentication and membership. New messages are JSON message objects. Channel edit/delete broadcasts include an ``event`` field; deletion events contain the message, server, and channel IDs. Conversation connections also receive reaction updates. Clients should close stale connections when changing the selected conversation.