Skip to main content

Server usage

import { SocketDBServer } from '@socketdb/server';
const server = SocketDBServer(options);

options (object)

  • store: Store (optional) in-memory cache, allows you to set a custom store, see custom-store, default
  • socketServer: SocketServer (optional) allows you to use a custom websocket server
  • updateInterval: number (optional) Updates are batched and sent in intervals. Here you can set the rate at which updates are sent. set it to 0 to disable batching, defaults to: 50
  • plugins: ServerPlugin[] (optional) set plugins
  • keepAliveInterval: number (optional) Interval in milliseconds between keep alive pings. Set to 0 to disable keep alive. Defaults to 30000

existing server

If you want to use SocketDB with an existing server, like express, you can initialize the WebsocketServer with your existing server.

For example:

import { SocketDBServer, createWebsocketServer } from '@socketdb/server';
import { createServer } from 'http';
import express from 'express';
const app = express();
const server = createServer(app);

SocketDBServer({
socketServer: createWebsocketServer({ server }),
});

server.listen(8080);

get

get: (path: string) => Node

Allows you to get current data from server for given path.

server.get('it/together');

update

update: (data: Node) => void

Allows you to update current data on server. Argument needs to be a Node.

server.update({
value: { player: { value: { Peter: { value: { hp: { value: 1 } } } } } },
});

delete

delete: (path: string) => void

Allows you to delete data for a given path.

server.delete('my/fears');

listen

listen: (port?: number, callback?: () => void) => void

Starts the server on given port. Defaults to 8080.

server.listen(8080, () => {
console.log('server is listening');
});

intercept

intercept: (hook: Hook, callback: ServerHooks[Hook]) => () => void

Allows you to intercept server hooks without having to define a plugin. See what hooks are available.

const unsubscribe = server.intercept('server:clientConnect', ({ id }) => {
console.log('client connected', id);
});

// later
unsubscribe();

getClient

getClient: (id: string | ((context: SessionContext) => boolean)) => Client | null

Returns the client with the given id or null if no client was found. You can also pass a filter function to find a specific client.

const client = server.getClient('connection-id');
const client = server.getClient((context) => context.userId === 'user-id');

getClients

getClients: (filter?: (context: SessionContext) => boolean) => Client[]

Returns all clients or clients that match the given filter function.

const clients = server.getClients();
const clients = server.getClients((context) => context.userId === 'user-id');