Using Relay with Node.js

Trigger WebSocket events from your Node.js or Express app using Relay's Pusher-compatible server SDK.

Skip the server setup. Relay Cloud gives you managed WebSockets with a free tier. Connect in 60 seconds. Try free →

Prerequisites

  • Node.js 16+
  • A running Relay server
  • Your App Key, Secret, and App ID
1

Install the Pusher Server SDK

npm install pusher
2

Create relay.js

const Pusher = require('pusher');

const relay = new Pusher({
  appId:   process.env.RELAY_APP_ID,
  key:     process.env.RELAY_APP_KEY,
  secret:  process.env.RELAY_APP_SECRET,
  host:    process.env.RELAY_HOST ?? 'ws.relaycloud.dev',
  port:    process.env.RELAY_PORT ?? '443',
  useTLS:  true,
});

module.exports = relay;
3

Environment Variables

Add these to your .env file:

RELAY_APP_ID=your-app-id
RELAY_APP_KEY=your-app-key
RELAY_APP_SECRET=your-app-secret
RELAY_HOST=ws.relaycloud.dev
RELAY_PORT=443
4

Trigger from an Express Route

const express = require('express');
const relay = require('./relay');
const app = express();

app.post('/messages', express.json(), async (req, res) => {
  const { message } = req.body;

  await relay.trigger('public-feed', 'message.sent', {
    message,
    timestamp: new Date().toISOString(),
  });

  res.json({ status: 'sent' });
});
5

Private Channel Trigger

await relay.trigger('private-user.42', 'notification', {
  text: 'You have a new message',
});
6

Batch Triggers

await relay.triggerBatch([
  { channel: 'public-feed',    name: 'message.sent', data: { message: 'Hello' } },
  { channel: 'private-user.1', name: 'notification', data: { text: 'Hi' } },
]);

Relay supports the full Pusher server SDK interface including batch triggers, channel info queries, and presence data.

Ready to skip the server setup? Relay Cloud gives you a production WebSocket server instantly. Start free, upgrade when you grow. Start free →