blind-push-gateway
v0.1.2
Published
P2P Push notification gateway that work with blind-peer
Readme
blind-push-gateway
POC - This is a proof-of-concept still. Breaking changes possible till the V1 release.
P2P push notification gateway for blind-peer clients. The service exposes a forward-push RPC method over Hyperswarm, converts the request into Android/APNS payloads, and forwards it through an external push provider such as Firebase Cloud Messaging.
Install
npm install blind-push-gatewayUsage
Create a config file at ~/.blind-push-gateway/config.json:
{
"certPath": "./service-account.json",
"notification": {
"title": "Keet",
"body": "✉️"
},
"apnsTopic": "io.keet.app"
}Then run:
blind-push-gateway runThe service will log its public key on startup. Clients can connect to that swarm key and send forward-push RPC requests.
How It Works
- The operator starts the gateway with Firebase service account credentials.
- The gateway listens on Hyperswarm and accepts RPC connections through
protomux-rpc-router. - A client sends a
forward-pushrequest encoded withblind-push/encodings. - The gateway encodes the request, derives Android/APNS fields, and forwards the message through the configured push service.
CLI
blind-push-gateway run [options]--config|-c [path]: config path, defaults to~/.blind-push-gateway/config.json--storage|-s [path]: storage path, defaults to~/.blind-push-gateway/storage
API
const service = new BlindPushGateway(swarm, router, externalPushService, opts)
Create a new gateway service.
swarm:Hyperswarminstancerouter:ProtomuxRPCRouterinstanceexternalPushService: object with an asyncsend(message)methodopts.notification: default notification payload, defaults to{ title: 'Keet', body: '✉️' }opts.apnsTopic: APNS topic, defaults toio.keet.app
await service.ready()
Start the gateway and begin listening for RPC connections.
await service.close()
Gracefully shut down the gateway.
service.publicKey
The swarm public key clients use to connect.
