Sockudo – Pusher-compatible WebSocket server in Rust
Sockudo – Pusher-compatible WebSocket server in Rust
I built a WebSocket server in Rust that implements the Pusher protocol. It's designed to be a self-hosted alternative to Pusher, Laravel Reverb, or Soketi. What it does: Sockudo speaks the Pusher protocol, so if you're already using Pusher client libraries (like Laravel Echo), you can point them at Sockudo without changing your frontend code. It handles the usual WebSocket stuff - public/private/presence channels, client events, authentication, webhooks. Why Rust: The main reason was performance and resource efficiency. It runs with Tokio for async, uses fastwebsockets for the WebSocket implementation, and the whole thing is pretty lean on memory. You can run it in Docker with minimal resources. Architecture highlights: Modular adapters for horizontal scaling (Redis, Redis Cluster, NATS, or local) Multiple backends for app config storage (MySQL, PostgreSQL, DynamoDB, or in-memory) Queue systems for webhooks (Memory, Redis, SQS) Rate limiting with configurable backends Prometheus metrics built in Getting started is straightforward: docker run -d -p 6001:6001 sockudo/sockudo:latest Or install from crates.io: cargo install sockudo Current status: The project has comprehensive Prometheus metrics, supports SSL/TLS, has CORS configuration, and includes both REST API and WebSocket endpoints. There's a Grafana dashboard for monitoring, health check endpoints, and it works with Kubernetes deployments. The docs cover most deployment scenarios - Docker, K8s, AWS, GCP, Azure. There's a Makefile with shortcuts for common operations and a test suite. What it doesn't have yet: I'm working on OpenTelemetry support and SurrealDB support for app managing. The benchmarking setup exists but I haven't published official performance numbers because I want to do proper testing across different scenarios first. Why I'm sharing: If you need a self-hosted WebSocket solution that's Pusher-compatible, this might be useful. The codebase is MIT licensed and contributions are welcome. I built it to solve a problem I had, and figured others might have the same issue. GitHub: https://github.com/RustNSparks/sockudo Docs: https://sockudo.app Crates.io: https://crates.io/crates/sockudo Happy to answer questions about the implementation, deployment, or architecture decisions.
Share cardActual performance
Launch Intel predictions
Analyze your own launch →Correct prediction on native model
Similar products
strftime-ruby, no-std, Ruby-compatible Rust implementation of strftime
Build A2A Compatible AI Agents with Rust
Peeroxide – Full wire-compatible Rust implementation of Hyperswarm
Latchor – Tang-compatible NBDE server written in Elixir
A MISRA C compatible AES, AES-GCM, and AES-CMAC implementation
HttpClientModule with parameter encodings compatible with back ends
A redux-compatible redux wrapper
Tkinter-Compatible Multithreading
OS3-RNode, an RNode-Compatible LoRa Modem on CH32V003
Nespresso Compatible Pods