/pubsub-server

This is a simple Publish-Subscribe (PubSub) server implemented in Node.js. It allows publishers to publish data to specific busID/subject channels and subscribers to subscribe to these channels to receive the published data.

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Bufferstack.IO PubSub Server

This is a simple Publish-Subscribe (PubSub) server implemented in Node.js. It allows publishers to publish data to specific busID/subject channels and subscribers to subscribe to these channels to receive the published data.

Features

  • Publishing: Publishers can send data to specific channels identified by busID/subject.
  • Subscribing: Subscribers can receive data published to specific channels.
  • Central Subject Repository: Provides an endpoint for checking the availability of busID/subject channels.
  • Persistent Storage: Supports storing published data in a JSON file for persistence.

Installation

  1. Clone the repository:

    git clone https://github.com/hj91/pubsub-server.git
  2. Install dependencies:

    cd pubsub-server
    npm install

Usage

  1. Start the server:

    npm start
  2. Use the provided client or implement your own to publish data, subscribe to channels, and check channel availability.

Endpoints

  • Publish: /publish/:busID/:subject (POST) - Publish data to a specific busID/subject channel.
  • Subscribe: /subscribe/:busID/:subject (GET) - Subscribe to a specific busID/subject channel to receive published data.
  • Check Availability: /subjects/:busID/:subject (GET) - Check if a specific busID/subject channel is available for subscription.

Configuration

  • Settings: Configuration settings such as port number are stored in settings.conf.
  • Persistent Storage: Published data is stored in subjects.json for persistence.

Usage

Publishing data

Subscribing data

Checking Availibility of channel

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.