3.1.5 • Published 2 years ago
@hieudevx/push-receiver v3.1.5
push-receiver
A library to subscribe to GCM/FCM and receive notifications within a node process.
For Electron, you can use electron-push-receiver instead which provides a convenient wrapper.
See this blog post for more details.
When should I use push-receiver ?
- I want to receive push notifications sent using Firebase Cloud Messaging in an electron desktop application.
- I want to communicate with a node process/server using Firebase Cloud Messaging infrastructure.
When should I not use push-receiver ?
- I want to send push notifications (use the firebase SDK instead)
- My application is running on a FCM supported platform (Android, iOS, Web).
Install
npm i -S @hieudevx/push-receiver
Requirements
- Node v16 (async/await/randomUUID support)
- Firebase sender id to receive notification
- Firebase serverKey to send notification (optional)
Usage
ClientConfig
interface ClientConfig {
  credentials?: Credentials; // Will be generated if missing - save this after first use!
  persistentIds?: PersistentId[]; // Default - []
  senderId: string; // Required
  bundleId?: string; // Default - 'receiver.push.com'
  chromeId?: string; // Default - 'org.chromium.linux'
  chromeVersion?: string; // Default - '94.0.4606.51'
  skipFcmRegistration?: boolean; // Default - false
  logLevel?: keyof typeof LogLevels; // 'NONE'|'DEBUG'|'VERBOSE' - default: 'NONE'
  vapidKey?: string; // Default - default firebase VAPID key
  heartbeatIntervalMs?: number; // Default - 5 * 60 * 1000
}Node example
import PushReceiver from "@hieudevx/push-receiver";
import { argv as parsedArgs } from "yargs";
if (!parsedArgs.senderId) {
  console.error("Missing senderId");
  return;
}
(async () => {
  const instance = new PushReceiver({
    logLevel: parsedArgs.logLevel || "DEBUG",
    senderId: parsedArgs.senderId,
    persistentIds: [], // Recover stored ids of all previous notifications
  });
  const stopListeningToCredentials = instance.onCredentialsChanged(({ oldCredentials, newCredentials }) => {
    console.log("Client generated new credentials.", newCredentials);
    // Save them somewhere! And decide if thing are needed to re-subscribe
  });
  const stopListeningToNotifications = instance.onNotification(({ notification }) => {
    // Do someting with the notification
    console.log("Notification received", notification);
  });
  await instance.connect();
  if (parsedArgs.serverId) {
    await instance.testMessage(parsedArgs.serverId);
  }
  stopListeningToCredentials();
  stopListeningToNotifications();
  instance.destroy();
})();