@pmcollab/coworkstream-realtime
v0.1.0
Published
Server-Sent Events + WebSocket bridges for @pmcollab/coworkstream. Push new items, escalations, and resolutions to connected clients in real time.
Readme
@pmcollab/coworkstream-realtime
Push events from the engine to connected clients in real time. SSE works everywhere; WebSocket is provided for richer two-way needs.
Install
npm install @pmcollab/coworkstream-realtimeUse (server)
import express from 'express'
import { createRealtimeHub, createSSEHandler } from '@pmcollab/coworkstream-realtime'
import { createEngine } from '@pmcollab/coworkstream-engine'
const hub = createRealtimeHub()
const engine = createEngine({ /* ... */ })
engine.on('escalate', (item) => hub.publish('item.escalate', item))
engine.on('autoResolve', (item) => hub.publish('item.auto_resolved', item))
engine.on('resolve', (e) => hub.publish('item.resolved', e))
const app = express()
app.get('/api/inbox/stream', createSSEHandler(hub, {
resolveContext: async (req) => ({ userId: req.user?.id }),
}))Use (client)
import { connectRealtime } from '@pmcollab/coworkstream-realtime/client'
const realtime = connectRealtime({
url: '/api/inbox/stream',
onEvent: (event) => store.handleRealtimeEvent(event),
})WebSocket alternative
import { WebSocketServer } from 'ws'
import { bindWebSocketServer } from '@pmcollab/coworkstream-realtime'
const wss = new WebSocketServer({ server })
bindWebSocketServer(hub, wss, {
resolveContext: (ws, req) => ({ userId: req.headers['x-user-id'] }),
})License
Commercial. See LICENSE in the repository root.
