Skip to content

WebSocket

typescript
app.ws("/chat", {
  open(ws) { console.log("Client connected"); },
  message(ws, msg) { ws.send(`Echo: ${msg}`); },
  close(ws, code, reason) { console.log("Disconnected"); },
  error(ws, error) { console.error("WS Error:", error); },
  drain(ws) { console.log("Buffer drained"); },
});

With Typed Data

typescript
app.ws<{ userId: string; room: string }>("/chat/:room", {
  open(ws) {
    ws.subscribe(ws.data.room);
    ws.send(`Welcome to ${ws.data.room}!`);
  },
  message(ws, msg) {
    ws.publish(ws.data.room, `${ws.data.userId}: ${msg}`);
  },
  close(ws) {
    ws.unsubscribe(ws.data.room);
  },
});

Broadcasting

typescript
// Publish to all subscribers of a room
ws.publish("room-name", "message");

// Subscribe/unsubscribe
ws.subscribe("updates");
ws.unsubscribe("updates");

Released under the MIT License.