Server
This documents the old v1 API. See Bun Adapter for the current version.
To create a Zocket server, you create:
- A Zocket instance (
zocket.create(...)) - A router (
zo.router().outgoing(...).incoming(...)) - A server adapter (today: Bun via
createBunServer)
Server Initialization
Section titled “Server Initialization”import { zocket, createBunServer } from "@zocket/core";import { z } from "zod";
const zo = zocket.create({ headers: z.object({ authorization: z.string().optional() }), onConnect: (headers, clientId) => ({ userId: headers.authorization ?? null }), onDisconnect: (ctx, clientId) => { console.log(`Client disconnected: ${clientId}`); }});
const appRouter = zo .router() .outgoing({ system: { announcement: z.object({ text: z.string() }), }, }) .incoming(({ send }) => ({ system: { announce: zo.message .input(z.object({ text: z.string() })) .handle(({ input }) => { send.system.announcement({ text: input.text }).broadcast(); }), }, }));
const handlers = createBunServer(appRouter, zo);
Bun.serve({ fetch: handlers.fetch, websocket: handlers.websocket, port: 3000,});Sending Messages
Section titled “Sending Messages”The send object mirrors your outgoing router definition. You can also use handlers.send for server push outside handlers.