@syncsphere/server
v1.0.0
Published
Server-side TypeScript library for SyncSphere real-time state synchronization
Maintainers
Readme
SyncSphere Server Library
The SyncSphere server library provides WebSocket server functionality for managing client connections and state synchronization.
Installation
npm install @syncsphere/typescript-serverBasic Usage
import { WebSocketManager } from '@syncsphere/typescript-server';
// Create a new WebSocket server
const server = new WebSocketManager({
port: 8080,
persistence: true,
persistenceOptions: {
persistenceDir: './persistence',
autoSave: true,
autoSaveInterval: 60000,
keepScopeHistoryInHours: 24,
batchSaving: true,
batchSize: 100
}
});
// Register custom handlers (optional)
server.registerEventHandler('CUSTOM_ACTION', (message, connection) => {
// Handle custom action
});
// Close server when done
server.close();API Reference
WebSocketManager
The main class for managing WebSocket connections and state.
class WebSocketManager {
constructor(options?: ISyncSphereParams);
// Register a custom event handler
registerEventHandler(type: string, handler: IMessageEventHandler): void;
// Close the server
close(): void;
}Interfaces
// Server configuration
interface ISyncSphereParams {
port?: number;
persistence?: boolean;
persistenceOptions?: IPersistenceOptions;
}
// Persistence options
interface IPersistenceOptions {
persistenceDir?: string;
autoSave?: boolean;
autoSaveInterval?: number;
keepScopeHistoryInHours?: number;
batchSaving?: boolean;
batchSize?: number;
}
// Message interfaces
interface IRequestWebsocketMessage {
type: string;
scope: string;
payload: any;
}
interface IResponseWebsocketMessage {
type: string;
scope: string;
payload: ILastActionWithHash | null;
}
// Handler interfaces
interface IMessageEventHandler {
(message: IRequestWebsocketMessage, connection: WebSocket): void | Promise<void>;
}
interface RemoteActionFilter {
(scope: string, message: IResponseWebsocketMessage, connection: WebSocket): boolean | Promise<boolean>;
}
interface MessageInterceptor {
(scope: string, message: IResponseWebsocketMessage, connection: WebSocket): void | Promise<void>;
}Examples
See the demos directory for complete examples of server usage.
License
ISC
