LihengGong / realtime_push_fanout

A few working projects of pushpin

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A simple Pushpin dashboard

What is fanout/pushpin

Pushpin is an open-source self-hosted realtime push server.

What is realtime push

The realtime push is a simple protocol using HTTP version 2 to deliver real time events which can be delivered (or “pushed”) in a timely fashion.
An example would be Slack.
In Slack, users can subscribe to channels. If messages are published to a channel(or some channels), all users subscribed to that channel are notified. This procedure is formally called "pub/sub model".
In a pub/sub model, any message published to a topic is immediately received by all of the subscribers to the topic.

What is special with pushpin?

  • It is open source(yay!)
  • It is self-hosted
    • Pros: User controls everything.
    • Cons: Setting up servers might be tedious. Maintenance cost is high.
    • The "cloud" version of pushpin is fanout(which costs money of course).
  • It is more a proxy than a server. More specifically:
    • It is transparent with clients(i.e. clients can be totally unaware of the existence of pushpin server).
    • The backend must handle proxied requests, which means the backend is responsible for subscribing the clients to specific channels.
      • Pros: Client does not need to know anything about publish and subscribe.
      • Cons: More development burdens are delegated to Backend.
    • The backend must tell Pushpin to push data. Regardless of how clients are connected, data may be pushed to them by making an HTTP POST request to Pushpin’s private control API (http://localhost:5561/publish/ by default). Pushpin will inject this data into any client connections as necessary.

Similar products

There are many similar products.

To name a few:

Pushpin message flow:

alt text

Resources

For a complete survey of realtime push tools, refer to this link

About

A few working projects of pushpin


Languages

Language:Python 80.1%Language:HTML 19.9%