import { BaseHandler, SocketRoute } from 'redweb'; import type { MessageOf, RedWebSocket, SocketMessageFrame } from 'redweb'; import { defineHandlerSchema } from 'redweb'; import { z } from 'zod'; // This example is stateless. Add application-owned identity and persistence as needed. export const PingMessage = defineHandlerSchema('ping', z.object({ text: z.string().max(500) }).strict()); export class Ping extends BaseHandler { constructor() { super(PingMessage); } onMessage(socket: RedWebSocket, payload: MessageOf, frame?: SocketMessageFrame) { socket.sendEvent?.('pong', payload, { requestId: frame?.requestId }); } } export class __CLASS__ extends SocketRoute { constructor() { super({ path: '/__NAME__', handlers: [Ping], protocol: { versions: ['1'] }, orderedMessages: true, allowDuplicateConnections: true, websocketOptions: { maxPayload: 4096 }, limits: { maxConnections: 100, maxPendingMessages: 32, maxBufferedBytes: 65536 }, }); } }