UNPKG

@akala/json-rpc-ws

Version:

json-rpc websocket transport

46 lines (45 loc) 1.74 kB
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; }