fcm-http2
v2.6.0
Published
Library in typescript for sending multicast notifications using HTTP/2 multiplexing and the FCM HTTP v1 API.
Maintainers
Readme
fcm-http2
Library in typescript for sending multicast notifications using HTTP/2 multiplexing and the FCM HTTP v1 API.
Features supported by fcm-http2:
- [X] HTTP/2 session & stream concurrency
- [X] Token batching support
- [X] Uninstall detection
- [X] Retry mechanism
Installation
For NodeJS applications, installation is done as follows:
npm install fcm-http2For Deno applications, installation is as follows:
import { FCM } from 'https://esm.sh/fcm-http2';Usage
Once the library has been installed you can start using it in this way.
How to create the FCM object?
CommonJS & ESM
Option for CommonJS with file:
// FCM library recovery
const FCM = require('fcm-http2').FCM;
// Basic configuration for FCM
const fcmOptions = {
// Pass in your service account JSON private key file (https://console.firebase.google.com/u/0/project/_/settings/serviceaccounts/adminsdk)
serviceAccount: require('./service-account.json'),
// Max number of concurrent HTTP/2 sessions (connections)
maxConcurrentConnections: 10,
// Max number of concurrent streams (requests) per session
maxConcurrentStreamsAllowed: 100
};
// Init FCM with options
const fcmClient = new FCM(fcmOptions);Option for ESM (JavaScript/TypeScript) with file:
// FCM library recovery
import { FCM, FcmBaseOptions } from 'fcm-http2';
// Basic configuration for FCM
const fcmOptions: FcmBaseOptions = {
// Pass in your service account JSON private key file (https://console.firebase.google.com/u/0/project/_/settings/serviceaccounts/adminsdk)
serviceAccount: require('./service-account.json'),
// Max number of concurrent HTTP/2 sessions (connections)
maxConcurrentConnections: 10,
// Max number of concurrent streams (requests) per session
maxConcurrentStreamsAllowed: 100
};
// Init FCM with options
const fcmClient = new FCM(fcmOptions);Option for CommonJS without file:
// FCM library recovery
const FCM = require('fcm-http2').FCM;
// Basic configuration for FCM
const fcmOptions = {
// Pass in your service account JSON private key file (https://console.firebase.google.com/u/0/project/_/settings/serviceaccounts/adminsdk)
// NOTE: Recover the three parameters from the service-account.json file
serviceAccount: {
project_id: '<project_id>',
private_key: '<private_key>',
client_email: '<client_email>'
},
// Max number of concurrent HTTP/2 sessions (connections)
maxConcurrentConnections: 10,
// Max number of concurrent streams (requests) per session
maxConcurrentStreamsAllowed: 100
};
// Init FCM with options
const fcmClient = new FCM(fcmOptions);Option for ESM (JavaScript/TypeScript) without file:
// FCM library recovery
import { FCM, FcmBaseOptions } from 'fcm-http2';
// Basic configuration for FCM
const fcmOptions: FcmBaseOptions = {
// Pass in your service account JSON private key file (https://console.firebase.google.com/u/0/project/_/settings/serviceaccounts/adminsdk)
// NOTE: Recover the three parameters from the service-account.json file
serviceAccount: {
project_id: '<project_id>',
private_key: '<private_key>',
client_email: '<client_email>'
},
// Max number of concurrent HTTP/2 sessions (connections)
maxConcurrentConnections: 10,
// Max number of concurrent streams (requests) per session
maxConcurrentStreamsAllowed: 100
};
// Init FCM with options
const fcmClient = new FCM(fcmOptions);Deno
Only option:
// FCM library recovery
import { FCM, FcmBaseOptions } from 'https://esm.sh/fcm-http2';
// Basic configuration for FCM
const fcmOptions: FcmBaseOptions = {
// Pass in your service account JSON private key file (https://console.firebase.google.com/u/0/project/_/settings/serviceaccounts/adminsdk)
// NOTE: Recover the three parameters from the service-account.json file
serviceAccount: {
project_id: '<project_id>',
private_key: '<private_key>',
client_email: '<client_email>'
},
// Max number of concurrent HTTP/2 sessions (connections)
maxConcurrentConnections: 10,
// Max number of concurrent streams (requests) per session
maxConcurrentStreamsAllowed: 100
};
// Init FCM with options
const fcmClient = new FCM(fcmOptions);Send multicast
// NOTE: Use the fcmClient object that you created earlier
// Token to send the notification to
const tokens = ['TOKEN_1', 'TOKEN_N'];
// Composing the message to be sent
const message = {
notification: {
title: "Test",
body: "Multiple Send"
},
data: {
notification: "true"
}
};
// Multiple sending of notification using token array
fcmClient.sendMulticast(message, tokens).then((unregisteredTokens: Array<string>) => {
// Sending successful
console.log('Message sent successfully');
// Remove unregistered tokens from your database
if (unregisteredTokens.length > 0) {
console.log('Unregistered device token(s): ', unregisteredTokens.join(', '));
}
}).catch((error: object) => console.log(error));Requirements
- Node.js >= 12
- Deno >= 2.4
License
Support
For any doubts open an issue or contact this email [email protected]
