@akala/json-rpc-ws
Version:
json-rpc websocket transport
46 lines (45 loc) • 1.74 kB
TypeScript
import { Base } from './base.js';
import { SocketAdapter, PayloadDataType, Connection } from './shared-connection.js';
import { Error as MyError } from './errors.js';
export default abstract class Client<TStreamable, TConnectOptions> extends Base<TStreamable> {
private socketConstructor;
private options?;
constructor(socketConstructor: (address: string, options?: TConnectOptions) => SocketAdapter, options?: TConnectOptions);
socket?: SocketAdapter;
/**
* Connect to a json-rpc-ws server
*
* @param {String} address - url to connect to i.e. `ws://foo.com/`.
* @param {function} callback - optional callback to call once socket is connected
* @public
*/
connect(address: string, callback: (err?: Event) => void): void;
/**
* Test whether we have a connection or not
*
* @returns {Boolean} whether or not we have a connection
* @public
*/
isConnected(): boolean;
/**
* Return the current connection (there can be only one)
*
* @returns {Object} current connection
* @public
*/
getConnection(): Connection<TStreamable>;
/**
* Close the current connection
*/
disconnect(): Promise<CloseEvent>;
/**
* Send a method request
*
* @param {String} method - name of method
* @param {Array} params - optional parameters for method
* @param {function} callback - optional reply handler
* @public
* @todo allow for empty params aka arguments.length === 2
*/
send<TParamType extends PayloadDataType<TStreamable>, TReplyType extends PayloadDataType<TStreamable>>(method: string, params: TParamType, callback?: (error?: MyError, result?: TReplyType) => void): void;
}