In this post, I'll tell you how I built a kernel for a service similar to pusher.com.
What is Pusher?
Pusher is a simple hosted API for quickly, easily and securely integrating real-time bi-directional functionality via WebSockets to web and mobile apps, or any other Internet-connected device.
What is our service?
Our service is called streamlab.
My key points while thinking about the structure
- Simple Codebase.
- Simple Design.
- Low resources usage.
- Don't re-invent the wheel.
- App -> Channels -> Events Model.
What technologies did I use?
- RethinkDB: I used rethinkdb as my default data storage, I store apps & its users in it, each app has channels and events, I didn't re-invent the wheel, but I used
RethinkDBchanges API to fetch all updates related to the specified channel/event(s), then broadcasting it to the subscribed clients VIA websocket.
- Redis: I used redis as our configurations management system, It is fast, easy and simple.
- Golang: The main programming language.
- HTTPSify: for Auto SSL Certs to support