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.
- 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.
-
Clone the repository:
git clone https://github.com/hj91/pubsub-server.git
-
Install dependencies:
cd pubsub-server npm install
-
Start the server:
npm start
-
Use the provided client or implement your own to publish data, subscribe to channels, and check channel availability.
- 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.
- Settings: Configuration settings such as port number are stored in
settings.conf
. - Persistent Storage: Published data is stored in
subjects.json
for persistence.
- curl -X POST -H "Content-Type: application/json" -d '{"message": "Hello, world!"}' http://localhost:3000/publish/bus1/news
Contributions are welcome! Feel free to open issues or submit pull requests.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.