Skip to content

navek-soft/push1st

Repository files navigation

Push1st

Push1st is open source multiple protocol PUB/SUB message broker server (Pusher, MQTT, RAW WebSocket).

Key features

  • 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)

Installation guide

Install from APT (Ubuntu, Debian) repository installation guide.

Build from source code build instruction.

Run Push1st server

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
  

Usage and API

It is necessary to use the following libraries to connect clients to the channels:

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

Support

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.

Author

Andrei Yakubouski. With special thanks to Igor Kostyukovsky and Naveksoft team.

License

Apache-2.0 License

Copyright (c) 2021 Naveksoft.

This project is provided as is without warranty of any kind. Use it at your own risk.