Get started with a free 7-day trial on our Startup plan.

start trial

PushRadar and Node.js

The latest version of PushRadar's API is v2, released July 5, 2019.

Welcome to PushRadar's API documentation for Node.js. This article takes you through publishing messages to a channel in realtime.

(Node.js)Prerequisites

In order to use PushRadar with Node.js:

  • (a)Make sure that you have Node.js installed on your server.
  • (b)Install PushRadar's library by running the command npm install pushradar --save
(server)"Hello World!" example

The following example demonstrates broadcasting a "Hello World!" message on a channel called test-channel. Replace your-secret-key with your actual PushRadar secret, which may be obtained from the API page of your dashboard.

  • Node.js
var radar = require("pushradar")("your-secret-key");
radar.broadcast("test-channel", {"message": "Hello World!"});
(client)Receiving messages

To find out how to receive messages by subscribing to channels, check out the documentation for our JavaScript client library.

(tip)Adding multiple data items

For convenience, PushRadar's Node.js library supports a fluent syntax to structure broadcasts. To add multiple data items, you can do either of the following:

  • Node.js
// ... var radar = require("pushradar")("...");
radar.addDataItem("message", "Hello World!").addDataItem("item-2", "It's me!")
    .broadcast("test-channel");

// --- or ---

radar.addDataItems({
    "message": "Hello World!",
    "item-2": "It's me!"
}).broadcast("test-channel");
(security)Private channels

PushRadar supports private channels, which allow you to ensure that certain channels are only subscribed to by certain users.

The process is as follows. First you must set up an authentication endpoint, a URL that PushRadar will call to authenticate users when they subscribe to a channel. From this endpoint, you will need to check whether the user is allowed to subscribe to the desired channel. If they are, the endpoint should return an authentication token which can be generated using the channelAuth method.

The final step is to register your authentication endpoint using the JavaScript client library.

Note:   Private channels must start with the prefix "private-"

Here is some code showing the whole process:

  • Node.js
var radar = require("pushradar")("your-secret-key");

// Get request query parameter "channel"
var channel = req.query.channel;
var userCanJoinChannel = true; // TODO: determine whether the user can join the channel

// ... if they can, return the auth token
if (userCanJoinChannel) {
    response.send(JSON.stringify({"authToken": radar.channelAuth(channel)}));
} else {
    res.status(403);
}

Lastly, register your authentication endpoint URL using the JavaScript client library:

  • JavaScript
var radar = new PushRadar("your-api-key");
radar.setAuthenticationEndpoint("http://localhost/channel-auth");
(security)Encrypted channels

PushRadar also supports end-to-end channel encryption, allowing you to protect sensitive data. Encrypted channels, like private channels, require authentication.

Note:   Encrypted channels must start with the prefix "private-encrypted-"

The process is almost identical to that when using private channels. The only difference is that your authentication endpoint should return a decryption key along with an authentication token as shown below.

Note:   You should use a long, hard to guess master passphrase as an encryption key.

  • Node.js
// var radar = require("pushradar")("...");

// Set a master key passphrase
radar.setEncryptionMasterKey("master-key-passphrase");

// Get request query parameter "channel" and determine whether the user can join it (see private channels)
var channel = ...
var userCanJoinChannel = ...

// ... if they can, return the auth token and decryption key
if (userCanJoinChannel) {
    response.send(JSON.stringify({
        "authToken": radar.channelAuth(channel),
        "decryptionKey": radar.generateDecryptionKey(channel)
    }));
} else {
    res.status(403);
}

Note:   Remember to register your authentication endpoint URL. See private channels for more info.