UNPKG

@akala/json-rpc-ws

Version:

json-rpc websocket transport

47 lines (46 loc) 1.92 kB
import { Base } from './base.js'; import type { ReplyCallback, PayloadDataType as BasePayloadDataType, Payload } from './shared-connection.js'; import { Connection } from './connection.js'; import * as stream from 'stream'; import type { SocketAdapter } from '@akala/core'; export interface ServerAdapter { close(): Promise<void>; onConnection(arg1: (socket: SocketAdapter<Payload<stream.Readable>>) => void): void; once(event: 'listening', callback: () => void): void; start(): void; } export type PayloadDataType = BasePayloadDataType<stream.Readable>; /** * json-rpc-ws server * */ export default class Server<TConnection extends Connection> extends Base<stream.Readable, TConnection> { private server?; constructor(server?: ServerAdapter); connection(socket: SocketAdapter<Payload<stream.Readable>>): Connection; /** * Start the server * * @param {Object} options - optional options to pass to the ws server. * @param {function} callback - optional callback which is called once the server has started listening. * @public */ start(server?: ServerAdapter, callback?: () => void): void; /** * Stop the server * * @public */ stop(): Promise<void>; /** * Send a method request through a specific connection * * @param {String} id - connection id to send the request through * @param {String} method - name of method * @param {Array} params - optional parameters for method * @param {replyCallback} callback - optional reply handler * @public */ send<TParam extends PayloadDataType, TReplyParam extends PayloadDataType>(id: string | number, method: string, params?: TParam, callback?: ReplyCallback<TReplyParam>): void; broadcast<TParam extends PayloadDataType, TReplyParam extends PayloadDataType>(method: string, params: TParam, callback?: ReplyCallback<TReplyParam>): void; }