Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Self-hosted Pusher-compatible WebSocket server with Sockudo

Description and use

Sockudo is a self-hosted, Pusher-compatible WebSocket server built in Rust. It offers resource efficiency and horizontal scaling capabilities, allowing users to replace managed services without modifying existing frontend code.

Problem

Need for a self-hosted, resource-efficient alternative to managed WebSocket services like Pusher, Laravel Reverb, or Soketi, while maintaining compatibility with existing client libraries.

Outcome

A self-hosted, Pusher-compatible WebSocket server implemented in Rust, offering low resource usage, horizontal scaling via various adapters, and seamless integration with existing Pusher client libraries.

Workflow

  • Choose deployment method: Docker or Cargo install.
  • For Docker: Run 'docker run -d -p 6001:6001 sockudo/sockudo:latest'.
  • For Cargo: Run 'cargo install sockudo'.
  • Configure adapters for scaling (Redis, Redis Cluster, NATS, or local).
  • Configure backend for app config storage (MySQL, PostgreSQL, DynamoDB, or in-memory).
  • Configure queue system for webhooks (Memory, Redis, SQS).
  • Point existing Pusher client libraries (e.g., Laravel Echo) to the Sockudo endpoint.
  • Monitor using built-in Prometheus metrics and optional Grafana dashboard.

Evidence

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.

Source

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.

Source

  • Record date: 2026-09-07T13:05:30.742Z