@akala/json-rpc-ws
Version:
json-rpc websocket transport
73 lines (72 loc) • 2.54 kB
TypeScript
import { Connection, type Handler, type PayloadDataType, type Parent, Payload } from './shared-connection.js';
import type { SocketAdapter } from '@akala/core';
/**
* Base functionality shared by client and server
*
* @constructor
* @public
*/
export declare abstract class Base<TStreamable, TConnection extends Connection<TStreamable> = Connection<TStreamable>> implements Parent<TStreamable, TConnection> {
type: string;
constructor(type: string);
id: `${string}-${string}-${string}-${string}-${string}`;
browser: boolean;
private requestHandlers;
protected connections: {
[id: string | number]: Connection<TStreamable>;
};
/**
* Add a handler function for a given method
*
* @param {String} method - name of the method to add handler for.
* @param {function} handler - function to be passed params for given method.
* @todo enforce handler w/ two-param callback
* @public
*/
expose<TParamType extends PayloadDataType<TStreamable>, TReplyType extends PayloadDataType<TStreamable>>(method: string, handler: Handler<TConnection, TStreamable, TParamType, TReplyType>): void;
/**
* Connected event handler
*
* @param {Object} socket - new socket connection
* @private
*/
connected(socket: SocketAdapter<Payload<TStreamable>>): void;
abstract connection(socket: SocketAdapter<Payload<TStreamable>>): Connection<TStreamable>;
/**
* Disconnected event handler
*
* @param {Object} connection - connection object that has been closed
* @private
*/
disconnected(connection: Connection<TStreamable>): void;
/**
* Test if a handler exists for a given method
*
* @param {String} method - name of method
* @returns {Boolean} whether or not there are any handlers for the given method
* @public
*/
hasHandler(method: string): boolean;
/**
* Get handler for a given method
*
* @param {String} method - name of method
* @returns {Array} - handler for given method
* @public
*/
getHandler(method: string): Handler<TConnection, TStreamable, PayloadDataType<TStreamable>, PayloadDataType<TStreamable>>;
/**
* Get a connection by id
*
* @param {id} id - id of the connection to get
* @returns {Connection} - Connection
* @public
*/
getConnection(id: string | number): Connection<TStreamable>;
/**
* Shut down all existing connections
*
* @public
*/
hangup(): void;
}