a collection of lightweight TypeScript packages for AT Protocol, the protocol powering Bluesky
README.md

@atcute/xrpc-server-node#

Node.js WebSocket adapter for @atcute/xrpc-server.

npm install @atcute/xrpc-server-node

see the subscriptions section in the main package for usage details.

import { serve } from '@hono/node-server';
import { XRPCRouter } from '@atcute/xrpc-server';
import { createNodeWebSocket } from '@atcute/xrpc-server-node';

import { ComExampleSubscribe } from './lexicons/index.js';

const ws = createNodeWebSocket();
const router = new XRPCRouter({ websocket: ws.adapter });

router.addSubscription(ComExampleSubscribe.mainSchema, {
	async *handler({ params, signal }) {
		while (!signal.aborted) {
			yield {
				// ...
			};
		}
	},
});

const server = serve({ fetch: router.fetch, port: 3000 }, (info) => {
	console.log(`listening on port ${info.port}`);
});

ws.injectWebSocket(server, router);