@kalisio/feathers-webpush v1.0.2
feathers-webpush
feathers-webpushsimplifies the sending of web push notifications in a FeathersJS application.
Principle
The feathers-webpush module provides a simplified way to send web push notifications in a FeathersJS application. It leverages the web-push package to interact with the Web Push protocol.

Usage
Installation
npm install @kalisio/feathers-webpush --saveor
yarn add @kalisio/feathers-webpushExample
The provided example illustrates how to setup:
- a server app
- a browser client app
API
feathers-webpush consists of two parts:
- Service that provides create method for sending notifications
- Hooks, which provide function for deleting expired subscriptions
Service
Service (options)
Create an instance of the service with the given options:
| Parameter | Description | Required |
|---|---|---|
vapidDetails | The vapidDetails configuration. Refer to the web-push package documentation for more information. | yes |
app | The feathers app instance. | yes |
create (data, params)
The create method is used to send web push notifications. The data payload must contain the following properties:
| Property | Description | Required |
|---|---|---|
notification | The data payload for the push notification. | yes |
subscriptionService | The name of the service where subscriptions are registered. | yes |
subscriptionProperty | The name of the key where subscriptions are regitered. It can be an array of subscriptions or a single subscription object | yes |
subscriptionFilter | The filter you wish to apply when retrieving subscriptions. | no |
Note: Subscription should be registered in the following format:
{ endpoint: 'url_google', keys: { auth: 'xxxx', p256dh: 'xxxx' }}
Hooks
The feathers-webpush module provides a hook for managing web push subscriptions.
deleteExpiredSubscriptions ()
The deleteExpiredSubscriptions is an after hook that deletes expired subscriptions. It should be used after the create method.
To use this hook, you need to import it and include it in your FeathersJS application.
Exemple usage:
import { deleteExpiredSubscriptions } from '@kalisio/feathers-webpush'
app.service('push-notifications').hooks({
after: {
create: [deleteExpiredSubscriptions()]
}
})Client
The client.js file provides a utility to manage client-side web push notifications with the following functions:
Checking prerequisites
Before using web push notifications, you need to check if the necessary prerequisites are met. The checkPrerequisites function provided by feathers-webpush can be used for this purpose. It checks whether the browser supports notifications and returns error message 498 if it does not.
Requesting notification permission
To ask the user for permission to send notifications, you can use the requestNotificationPermission function provided by feathers-webpush. This function requests permission from the user and returns code 499 if permission is denied, or the status of the permission.
Get push subscription
The getPushSubscription function retrieves the current push subscription, if it exists. It returns the subscription object or null if there is no active subscription.
Subscribe to push notifications
To subscribe to push notifications, use the subscribePushNotifications function. It requires a public VAPID key as a parameter and returns the subscription object.
Unsubscribe from push notifications
To unsubscribe from push notifications, use the unsubscribePushNotifications function. It retrieves the registration from the service worker and unsubscribes the current push subscription. It returns the unsubscribed subscription object.
Adding and removing subscriptions
You can add or remove subscriptions from a user object using the addSubscription and removeSubscription functions provided by feathers-webpush. These functions require the user object, the current subscription, and the subscription property.
Tests
To run the tests for feathers-webpush, install the required node modules and run npm run test or yarn test.
To perform the tests, you need to create web push subscription and set the following environment variables:
SUBSCRIPTION_TEST_ENDPOINTSUBSCRIPTION_TEST_KEY_AUTHSUBSCRIPTION_TEST_KEY_P256DH
License
Copyright (c) 2017-20xx Kalisio
Licensed under the MIT license.
Authors
This project is sponsored by
