Setu-TS
    Preparing search index...

    Module websocket-plugin/src

    import { createApplication } from '@setu-ts/kernel';
    import { RuntimePlugin } from '@setu-ts/runtime';
    import { WebSocketPlugin } from '@setu-ts/websocket-plugin';
    import { CAPABILITIES, type IWebSocketService } from '@setu-ts/common';

    const app = createApplication({
    plugins: [RuntimePlugin(), WebSocketPlugin({ heartbeatMs: 30_000 })],
    });

    const ws = app.services.get<IWebSocketService>(CAPABILITIES.WEBSOCKET);
    ws.route('/ws/chat', {
    onOpen: (conn, { query }) => {
    conn.data.set('room', query.room ?? 'lobby');
    ws.room(query.room ?? 'lobby').add(conn);
    },
    onMessage: (conn, data) => {
    ws.room(conn.data.get('room') as string).broadcast(data, { except: conn });
    },
    });

    await app.start({ port: 3000 });

    0.1.0

    HeartbeatSweeper
    Room
    RoomRegistry
    WebSocketConnection
    WebSocketService
    WebSocketUnavailableError
    WsRouteTable
    HeartbeatOptions
    LocalBroadcastOptions
    RoomMembershipListener
    WebSocketPluginOptions
    WebSocketRouteDefinition
    WsRoute
    RoomPublisher
    WebSocketRouteEntry
    WsRouteMatch
    buildContext
    frameByteLength
    parseRequestedProtocols
    resolveOptions
    selectProtocol
    WebSocketPlugin
    CAPABILITIES → CAPABILITIES
    IWebSocketConnection → IWebSocketConnection
    IWebSocketService → IWebSocketService
    IWebSocketTransport → IWebSocketTransport
    RealtimeDiagnosticsOptions → RealtimeDiagnosticsOptions
    RoomBroadcastOptions → RoomBroadcastOptions
    WebSocketCloseEvent → WebSocketCloseEvent
    WebSocketConnectionContext → WebSocketConnectionContext
    WebSocketEventSink → WebSocketEventSink
    WebSocketHandlers → WebSocketHandlers
    WebSocketReadyState → WebSocketReadyState
    WebSocketRoom → WebSocketRoom
    WebSocketRouteOptions → WebSocketRouteOptions
    WebSocketUpgradeDecision → WebSocketUpgradeDecision
    WebSocketUpgradeRouter → WebSocketUpgradeRouter