All Projects → hemerajs → websub-hub

hemerajs / websub-hub

Licence: MIT license
A WebSub Hub implementation in Node.js

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to websub-hub

twitch api2
Rust library for talking with the Twitch API aka. "Helix", TMI and more! Use Twitch endpoints fearlessly!
Stars: ✭ 91 (+106.82%)
Mutual labels:  pubsub
uorb
C++ inter-thread publish/subscribe middleware ported from PX4 and redesigned based on POSIX
Stars: ✭ 35 (-20.45%)
Mutual labels:  pubsub
network-monorepo
Monorepo containing all the main components of Streamr Network.
Stars: ✭ 223 (+406.82%)
Mutual labels:  pubsub
pubsub cli
super handy google cloud Pub/Sub CLI
Stars: ✭ 32 (-27.27%)
Mutual labels:  pubsub
twurple
Interact with Twitch's API, chat and subscribe to events via PubSub and EventSub.
Stars: ✭ 479 (+988.64%)
Mutual labels:  pubsub
galaxy-hub
Galaxy Community Hub
Stars: ✭ 80 (+81.82%)
Mutual labels:  hub
tips
TiKV based Pub/Sub server
Stars: ✭ 31 (-29.55%)
Mutual labels:  pubsub
notification
OST Notification helps publish critical events for cross platform communications
Stars: ✭ 20 (-54.55%)
Mutual labels:  pubsub
dead-simple
💀💡 Dead simple PubSub and EventEmitter in JavaScript
Stars: ✭ 21 (-52.27%)
Mutual labels:  pubsub
portara-website
Portara dashboard controller to change rate limit settings without redeploying your app
Stars: ✭ 42 (-4.55%)
Mutual labels:  pubsub
angular-PubSub
Angular 1.x implementation of the Publish–Subscribe pattern.
Stars: ✭ 32 (-27.27%)
Mutual labels:  pubsub
gobroker
golang wrapper for all (to-be) kinds of message brokers
Stars: ✭ 15 (-65.91%)
Mutual labels:  pubsub
hub
📨 A fast Message/Event Hub using publish/subscribe pattern with support for topics like* rabbitMQ exchanges for Go applications
Stars: ✭ 125 (+184.09%)
Mutual labels:  pubsub
UnityLauncherPro
Unity Hub Alternative Project Launcher with time saving features!
Stars: ✭ 226 (+413.64%)
Mutual labels:  hub
smartacus-mqtt-broker
smartacus-mqtt-broker is a Java-based open source MQTT broker that fully supports MQTT 3.x .Using Netty 4.1.37
Stars: ✭ 25 (-43.18%)
Mutual labels:  pubsub
ipfs-pubsub-chatroom
Simple IPFS Pubsub chatroom built on React
Stars: ✭ 45 (+2.27%)
Mutual labels:  pubsub
lila-ws
Lichess' websocket server
Stars: ✭ 99 (+125%)
Mutual labels:  pubsub
payload
A javascript single page application (SPA) driver for REST API payload management.
Stars: ✭ 16 (-63.64%)
Mutual labels:  pubsub
fastapi websocket pubsub
A fast and durable Pub/Sub channel over Websockets. FastAPI + WebSockets + PubSub == ⚡ 💪 ❤️
Stars: ✭ 255 (+479.55%)
Mutual labels:  pubsub
webfunc
Universal Serverless Web Framework. Write Express apps ready to be deployed to Zeit-Now, Google Cloud Functions (incl. functions reacting to Pub/Sub topics or Storage changes), and AWS Lambdas.
Stars: ✭ 71 (+61.36%)
Mutual labels:  pubsub

WebSub-Hub

npm version Build Status Coverage Status npm version stability

A WebSub Hub implementation in Node.js

  • Node: >= 8.0
  • Lead Maintainer: Dustin Deus
  • Status: In active development

WebSub provides a common mechanism for communication between publishers of any kind of Web content and their subscribers, based on HTTP web hooks. Subscription requests are relayed through hubs, which validate and verify the request. Hubs then distribute new and updated content to subscribers when it becomes available.

Expectations

  • Highly performant: A single node can handle thousands of subscriptions.
  • Scalable: Scale the hub in minutes. We choose monogdb as distributed storage.
  • Efficient: The difference (or "delta") may be computed by the hub and sent to all subscribers.
  • Auditing: Documenting the sequence of activities that have affected system by individual publishers/subscribers.
  • Standardized We're trying to be full compliant with the W3C WebSub specification.
  • Developer friendly Provide an easy interface to configure and use the hub.

Roadmap

  • Discovering the hub and topic URLs by looking at the HTTP headers of the resource URL.
  • Discovering the hub and topic URLs by looking at the contents of the resource URL as an XML document.
  • Discovering the hub and topic URLs by looking at the contents of the resource URL as an HTML document.
  • Subscribing to the hub with a callback URL.
  • Subscribing to the hub and requesting a specific lease duration.
  • Subscribing to the hub with a secret and handling authenticated content distribution.
  • Requesting that a subscription is deactivated by sending an unsubscribe request.
  • The Subscriber acknowledges a pending subscription on a validation request.
  • The Subscriber rejects a subscription validation request for an invalid topic URL.
  • The Subscriber returns an HTTP 2xx response when the payload is delivered.
  • The Subscriber verifies the signature for authenticated content distribution requests.
  • The Subscriber rejects the distribution request if the signature does not validate.
  • The Subscriber rejects the distribution request when no signature is present if the subscription was made with a secret.
  • The Hub respects the requested lease duration during a subscription request.
  • The Hub allows Subscribers to re-request already active subscriptions, extending the lease duration.
  • The Hub sends the full contents of the topic URL in the distribution request.
  • The Hub sends a diff of the topic URL for the formats that support it.
  • The Hub sends a valid signature for subscriptions that were made with a secret.

Additional roadmap

  • Setup testing environment with CI
  • Auditing
  • Content distribution over Websocket
  • Benchmarks

Specification

https://w3c.github.io/websub/

Useful links

Getting started

$ docker run -d -p 27017:27017 -p 28017:28017 -e AUTH=no tutum/mongodb
$ npm i -g websub-hub-cli
$ websub-hub-cli -l info -m mongodb://localhost:27017/hub

Play

$ docker run -d -p 27017:27017 -p 28017:28017 -e AUTH=no tutum/mongodb
$ node examples\full-example.js
$ node examples\ws-full-example.js

Test

$ npm run test
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].