@akala/json-rpc-ws
Version:
json-rpc websocket transport
47 lines (46 loc) • 1.92 kB
TypeScript
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;
}