poxa alternatives and similar packages
Based on the "Applications" category.
Alternatively, view poxa alternatives based on common mentions on social networks and blogs.
-
Phoenix Trello
Trello tribute done in Elixir, Phoenix Framework, React and Redux. -
Logflare
Never get surprised by a logging bill again. Centralized structured logging for Cloudflare, Vercel, Elixir and Javascript. -
Phoenix Battleship
The Good Old game, built with Elixir, Phoenix, React and Redux -
AlloyCI
Continuous Integration, Deployment, and Delivery coordinator, written in Elixir. -
CaptainFact
🔎 CaptainFact - API. The one that serves and process all the data for https://captainfact.io -
Phoenix Toggl
Toggl tribute done with Elixir, Phoenix Framework, React and Redux. -
Startup Job
An app to search startup jobs scraped from websites written in Elixir, Phoenix, React and styled-components. -
Consolex
Consolex is a tool that allows you to attach a web based console to any mix project -
uai_shot
A multiplayer ship game built with Elixir, Phoenix Framework and Phaser. :rocket: -
Alher
Alexander is a rock-solid IRC bot written in Elixir with powerful plugins. -
Exon
Exon is a “mess manager” developed in Elixir and provides a simple API to manage & document your stuff. -
Nvjorn
A multi-protocol network services monitor written in Elixir using Poolboy. -
medex
Medical Examination - application for register health check callbacks and represent their state via HTTP. -
chat
💬 CHAT: Instant Messenger. ISO/IEC: 20922; ITU/IETF: 3394, 3565, 5280, 5480, 5652, 5755 8551, X.509, CMS, PKCS-10, PCKS-7, OCSP, LDAP, DNS; ANSI: X9-42, X9-62, X25519, X488; NIST: SECP384r1. -
majremind
A self-maintained database of your updated server which tells you which one needs to be updated. -
Stabby Flies
A multiplayer fighting game built with Elixir, Phoenix and Pixi.
Collect and Analyze Billions of Data Points in Real Time
Do you think we are missing an alternative of poxa or a related project?
Popular Comparisons
README
Poxa
Open Pusher implementation compatible with Pusher libraries. It's designed to be used as a single registered app with id, secret and key defined on start.
How do I speak 'poxa'?
['poʃa] - Phonetic notation
[posha] : po ( potion ), sha ( shall )
Features
- Public channels;
- Private channels;
- Presence channels;
- Client events;
- SSL on websocket and REST API;
- Simple console;
- REST API
- /users on presence channels
- /channels/:channel_name
- /channels
Development
Poxa is a standalone elixir server implementation of the Pusher protocol.
You need Elixir 1.9 at least and Erlang 21.0
Clone this repository
Run
mix deps.get
mix compile
The default configuration is:
- Port: 8080
- App id: 'app_id'
- App key: 'app_key'
- App secret: 'secret'
Using Docker
Docker images are automatically built by Docker Hub. They are available at Docker Hub: https://hub.docker.com/r/edgurgel/poxa-automated/tags/
One can generate it using: docker build -t local/poxa .
.
The docker run
command should look like this:
docker run --rm --name poxa -p 8080:8080 edgurgel/poxa-automated:latest
Configuration
The following environment variables are supported:
PORT
POXA_APP_KEY
POXA_SECRET
POXA_APP_ID
POXA_REGISTRY_ADAPTER
WEB_HOOK
ACTIVITY_TIMEOUT
POXA_SSL
SSL_PORT
SSL_CACERTFILE
SSL_CERTFILE
SSL_KEYFILE
Your application
If you are using the pusher-gem:
Pusher.host = 'localhost'
Pusher.port = 8080
And pusher-js:
// will only use WebSockets
var pusher = new Pusher(APP_KEY, {
wsHost: 'localhost',
wsPort: 8080,
enabledTransports: ["ws", "flash"],
disabledTransports: ["flash"]
});
A working poxa is on http://poxa.herokuapp.com, with:
- App key: "app_key"
- App id: "app_id"
- App secret: "secret"
- Port: 80
Also a pusher example(https://github.com/pusher/pusher-presence-demo) is running using poxa at: http://poxa-presence-chat.herokuapp.com/
Console
A simple console is available on index:
You can see it in action on http://poxa.herokuapp.com using "app_key" and "secret" to connect. Now open the poxa-presence-chat and watch events happening!
Implementation
Poxa uses gproc extensively to register websocket connections as channels. So, when a client subscribes for channel 'example-channel', the websocket connection (which is a elixir process) is "tagged" as {pusher, example-channel}. When a pusher event is triggered on the 'example-channel', every websocket matching the tag receives the event.
Contributing
If you'd like to hack on Poxa, start by forking my repo on Github.
Dependencies can be fetched running:
MIX_ENV=dev mix deps.get
Compile:
mix compile
The test suite used is the ExUnit and Mimic to mock stuff.
To run tests:
mix test
Pull requests are greatly appreciated.
TODO
- [ ] SockJS support;
- [x] Complete REST api;
- [x] Mimic pusher error codes;
- [x] Integration test using pusher-js or other client library;
- [x] Web hooks;
- [x] Add 'Vacated' and 'Occupied' events to Console;
- [X] Use
gproc
to generate Console events so other handlers can be attached (Web hook for example); - [ ] Turn Poxa on a distributed server with multiple nodes;
Pusher
Pusher is an excellent service and you should use it in production.
Acknowledgements
Thanks to @bastos for the project name :heart:!
Who is using it?
- Waffle Takeout
- Tinfoil Security
- Add your project/service here! Send a PR! :tada: