Documentation

Everything you need to go realtime with EmitWave.

Subscribe to channels over a single WebSocket, publish signed events from your server, and ship live features with typed client and server SDKs.

Browse by topic

Pick a category to dive in.

Getting started

Understand the model, connect a client, and publish your first event in minutes.

Core concepts

Channels, events, presence, and the signed publish path that ties them together.

Security & delivery

Private channel authorization, end-to-end encryption, and outbound webhooks.

Client SDKs

Browser SDKs that connect, subscribe, and track presence from the frontend.

Server SDKs

Typed, HMAC-signing publishers for Node, Python, PHP, Laravel, Go, Ruby, Rust, and Java.

API reference

The publish endpoint, realtime auth, and the management API.

Quickstart

From zero to your first realtime event in under 5 minutes.

01

Create an application

Create an organization and application in the dashboard to get a public key and server credential.

02

Connect & subscribe

Use @emitwave/js in the browser with your public key and an end-user token to subscribe to a channel.

03

Publish from your server

Call trigger(channel, event, data) with a server SDK — the request is HMAC-signed automatically.

04

Receive in realtime

The gateway scopes the channel to your app and pushes the event to every subscriber in milliseconds.

// Browser: subscribe to a channel
// $ npm install @emitwave/js

import { Emitwave } from '@emitwave/js';

const emitwave = new Emitwave('ew_pk_live_your_public_key', {
  authHeaders: async () => ({
    Authorization: `Bearer ${await getEndUserToken()}`,
  }),
});

await emitwave.connect();

const channel = await emitwave.subscribe('orders');
channel.bind('order.created', (order) => {
  console.log(order.id, order.total);
});
Need a human?

We're here to help.

Community Discord

Ask questions and share what you're building with thousands of EmitWave developers.

Open an issue

Found a bug or want to suggest an improvement? File it in the open-source repo.

Talk to support

On a paid plan? Reach our engineering team for direct help with your integration.