finds.dev← search

// the find

edgurgel/poxa

★ 1,086 · Elixir · MIT · updated Jun 2024

Pusher server implementation compatible with Pusher client libraries.

Poxa is a self-hosted Pusher-compatible WebSocket server written in Elixir. It implements the Pusher protocol — public, private, and presence channels, client events, webhooks, REST API — so you can swap out the Pusher SaaS for your own server and keep your existing client SDKs untouched. Built for teams that want Pusher's client library ecosystem without the vendor dependency or per-connection pricing.

Uses gproc for process registry, which maps naturally to Elixir's actor model — each WebSocket connection is a process tagged with its channel, so fan-out is just a gproc broadcast rather than a manual subscriber list. Protocol compatibility is genuine: the integration tests run against actual pusher-js, not stubs. Presence channels (the hard part of Pusher) are fully implemented. Docker image is published and the environment variable surface is clean for container deployments.

Single-node only — the distributed multi-node TODO has been open since at least 2015 and hasn't moved, so horizontal scaling means putting a load balancer in front of independent processes with no shared state, which breaks presence channels across nodes. Last meaningful activity was mid-2024 and the project has the feel of maintenance mode rather than active development. SockJS is still unimplemented, which matters if you need fallback for environments where WebSocket is blocked. The console UI is frozen in Bootstrap 3 jQuery vintage and the JavaScript is vendored rather than packaged — minor, but signals the project isn't getting frontend attention.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →