Great question — this design pattern (WebSocket for server → client, HTTP POST for client → server) is actually very common in real-time applications like Discord, Slack, etc., and it boils down to security, reliability, and simplicity on the server side.
Here’s a breakdown of why Discord uses HTTP POST for sending messages, but WebSocket for receiving them:
🔁 WebSocket (Server → Client): Real-time Push
Discord uses WebSockets to push events to clients (e.g., new messages, typing notifications, presence updates) because: