vue-websocket-handler
Version:
a vue websocket handler library
61 lines (57 loc) • 1.63 kB
TypeScript
import { InjectionKey } from 'vue';
/**
* emitter type function
*/
type HandlerEmitter = (emitFlag: string, arg?: any) => any;
/**
* emitter type class
*/
type HandlerEmitterIntra = {
emitFlag: string;
effect: (arg?: any) => any;
};
/**
* union of emitter types
*/
type HandlerEmitterType = HandlerEmitter | HandlerEmitterIntra;
/**
* config type of webSocket
*/
interface WebSocketConfig {
host?: string;
port?: string | number;
url?: string;
emitters?: HandlerEmitter | HandlerEmitter[];
timeout?: number;
}
interface WebSocketHandlerType {
client: WebSocket;
protocol: string;
logVersion: () => void;
emitters: HandlerEmitterType | HandlerEmitterType[];
addHandlers?: () => void;
reCreateWebSocketInstance?: () => void;
onclose?: () => void;
onerror?: () => void;
onopen?: () => void;
onmessage?: (event?: MessageEvent) => void;
onreconnect?: () => void;
sendMessage?: (data: string | ArrayBufferLike | Blob | ArrayBufferView) => void;
}
/**
* for inject to get websocket handler in vue.use()
*/
declare const WsKey: InjectionKey<WebSocketHandlerType>;
/**
* this plugin used for vue.use()
*/
declare const useWebSocketPlugin: {
install(app: any, options?: WebSocketConfig): void;
};
declare const useInjectWebSocket: () => WebSocketHandlerType;
/**
* create ws handler
* @param {WebSocketConfig} config
*/
declare const useWebSocket: (config?: WebSocketConfig) => WebSocketHandlerType;
export { WebSocketConfig, WsKey, useInjectWebSocket, useWebSocket, useWebSocketPlugin };