npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

webpush-server

v0.0.1

Published

A reference Web Push server.

Downloads

4

Readme

Web Push Server

This is a Node Web Push server implementation.

Getting Started

The server is distributed as an npm module. You'll need Node >= 0.10.32 and npm installed on your machine; instructions and screencasts are available here. To install the server, run:

$ npm install -g webpush-server

This installs a webpush-server executable that can be used to start the server. webpush-server requires the following flags:

  • --port (Number): The port on which to listen (e.g., 8080).
  • --key (String): The path to a PEM-encoded TLS certificate.
  • --cert (String): The private key for the given certificate.
  • --pfx (String): The combined certificate, private key, and CA certs in PFX format. Mutually exclusive with --key and --cert.

Example usage:

$ webpush-server --port 8080 --key keys/key.pem --cert keys/cert.pem

The Node HTTP/2 library does not currently implement the Upgrade mechanism for HTTP/2, so TLS keys must be provided.

API

POST /devices

This is the push service resource specified by draft-02, or the push server URL from draft-01. A client registers itself with the server by requesting this resource. The server allocates "registration" (urn:ietf:params:push:reg) and "subscribe" (urn:ietf:params:push:sub) resources, and includes them in the response as link relations.

The "registration" and "subscribe" resources were called "monitor" (...:push:monitor) and "channel" (...:push:channel), respectively, in draft-01.

GET /devices/{regId}

This is the registration resource specified by draft-02, or the monitor resource from draft-01. A client requests this resource to receive push messages. Messages sent by the application server are serialized as HTTP/2 PUSH_PROMISE frames for GET requests to the associated "subscription" resource.

POST /devices/{regId}/channels

This is the subscribe resource specified by draft-02, or the channel resource from draft-01. A registered client creates a new subscription by requesting this resource. The server allocates a "subscription" (urn:ietf:params:push) resource, and includes it in the response as a link relation. The Location header contains the channel URI for the application server.

Note that draft-02 subsumes the subscription and channel URIs under the "subscription" resource, while this implementation provides a separate channel URI. In draft-02, the URIs included in the Link: <...>; rel="urn:ietf:params:push" and Location headers are equivalent.

GET /devices/{regId}/channels/{subId}

This is the subscription resource specified by draft-02. A client can fetch the last message sent by an application server for a subscription by requesting this resource. If the server does not store messages, a 204 (No Content) response is returned.

This implementation does not currently store messages; incoming messages will be dropped if the client is not holding open a request to the registration resource.

DELETE /devices/{regId}/channels/{subId}

This deletes an active subscription. Since messages are not currently stored, requesting this resource is a no-op.

PUT /updates/{key}

This is the resource allocated by the subscribe resource for the application server. The registration and subscription information is encoded into the opaque key to prevent application servers from correlating subscriptions for a client.

License

MPL 2.0.