Push1st is open source multiple protocol PUB/SUB message broker server (Pusher, MQTT, RAW WebSocket).
- Suitable for distributed one-to-many communications and distributed applications
- Cross type channel messaging (auto casting message between channel protocol format)
- Broadcast, Multicast, Unicast - message delivery
- Multi-applications support (credentials for every app)
- Improved hooks (multiple http/https webhooks, lua hook, for every app, triggered by register, unregister, join, leave or push into channel)
- Support multiple protocols
- Pusher
- Raw WebSocket (with multi-channel subscription)
- MQTT protocols (todo)
- Support HTTP Pipelining for API and WebHook
- Public, Private, Presence channel support
- Permanent or auto-closing channel
- Cluster functionality
- Register\Unregister channel
- Join\Leave subscriber
- Cross nodes message delivery
- Extending cluster functionality via Lua script
- User presence synchronization
- API Pusher format support with TCP or\and UNIX socket
- API access token, Pusher key generation, API channels
- Support WebSocket push messaging (broadcast, multicast, unicast)
- Websocket channel authorization by Bearer access token
- IP whitelist for every enabled protocol
- TCP/IP as basic communication protocol
- WS/WSS proto (auto generate self-signed certificate if cer\key not specified)
- Support for websocket sessions prefix naming (can be used for multicast message pushing)
Install from APT (Ubuntu, Debian) repository installation guide.
Build from source code build instruction.
After installing or building Push1st you can configure server Configure Push1st. By default Push1st is installed into /opt/naveksoft/push1st and registered as system service. (Service doesn't start automatically. You must run service manually, after each install.)
sudo service push1st start
Run Push1st from command line (not as service)
/opt/naveksoft/push1st/push1st -c /opt/naveksoft/push1st/server.yml -V4
# See command line params
/opt/naveksoft/push1st/push1st --help
It is necessary to use the following libraries to connect clients to the channels:
- Pusher client libraries
- Any WebSocket client for Raw WebSocket
ws://localhost:6001/pusher/app/{{app-key}}
/ or ws://localhost:6001/app/{{app-key}}
/
ws://localhost:6001/ws/app/{{app-key}}
/{channel-name-1}
/{channel-name-2}
/[?session=prefix
&token=access-token
]
see Python examples
see Push1st API
Push1st is our open source project supported by a small group of people. We do not offer formal support processes. If you require formal support arrangements please email us info@naveksoft.com.
Andrei Yakubouski. With special thanks to Igor Kostyukovsky and Naveksoft team.
Copyright (c) 2021 Naveksoft.
This project is provided as is without warranty of any kind. Use it at your own risk.