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 →