UNPKG

vue-websocket-handler

Version:
119 lines (114 loc) 3.35 kB
'use strict'; var vue = require('vue'); // src/utils.ts var fixUrl = (url) => { if (url === void 0) { return ""; } else { return url; } }; var checkWindowWebSocket = () => { return WebSocket !== void 0; }; var logVersion = () => { console.log("Version 0.0.5"); }; // src/config.ts var CONNECT_TIMEOUT = 5e3; var WsKey = Symbol("ws"); var useWebSocketPlugin = { install(app, options) { let pluginWebSocketHandler = useWebSocket(options); app.config.globalProperties.$ws = pluginWebSocketHandler; app.provide(WsKey, pluginWebSocketHandler); } }; var useInjectWebSocket = () => { let WebSocketHandler = vue.inject(WsKey); if (WebSocketHandler === void 0) { throw new Error("websocket error"); } else { return WebSocketHandler; } }; var useWebSocket = (config) => { if (!checkWindowWebSocket()) { console.error("Your browser doesn't support websocket"); throw new Error("no support"); } const configHost = config == null ? void 0 : config.host; let port = JSON.stringify(config == null ? void 0 : config.port); if (port[0] == '"') { port = port.slice(1, port.length - 1); } const formattedUrl = fixUrl(config == null ? void 0 : config.url); const fullUrl = `ws://${configHost}:${port}${formattedUrl}`; let thisWebSocket = new WebSocket(fullUrl); typeof (config == null ? void 0 : config.timeout) === void 0 ? CONNECT_TIMEOUT : config == null ? void 0 : config.timeout; let initWebSocketEventHandlers = () => { thisWebSocket.onopen = () => { console.log(`successful create WebSocket at ${fullUrl}`); }; thisWebSocket.onerror = () => { console.error(`error`); }; thisWebSocket.onclose = () => { console.log("close websocket"); }; }; initWebSocketEventHandlers(); const emitters = new Array(); if (config == null ? void 0 : config.emitters) { emitters.push(config == null ? void 0 : config.emitters); } else { if (typeof (config == null ? void 0 : config.emitters) !== "undefined") { (config == null ? void 0 : config.emitters).map((emitter) => { emitters.push(emitter); }); } } let webSocketHandler = { client: thisWebSocket, protocol: fullUrl, logVersion, emitters }; webSocketHandler.reCreateWebSocketInstance = () => { try { thisWebSocket = new WebSocket(webSocketHandler.protocol); webSocketHandler.addHandlers(); } catch (e) { throw e; } }; webSocketHandler.addHandlers = () => { webSocketHandler.onopen = initWebSocketEventHandlers; webSocketHandler.client.onmessage = (event) => { console.log(event); }; webSocketHandler.sendMessage = (data) => { var _a; (_a = webSocketHandler.client) == null ? void 0 : _a.send(data); }; webSocketHandler.client.onmessage = (event) => { try { if (webSocketHandler.emitters instanceof Array) { webSocketHandler.emitters.forEach( (emitter) => { } ); } } catch (e) { console.log(e); } webSocketHandler.onmessage(event); }; }; webSocketHandler.addHandlers(); return webSocketHandler; }; exports.WsKey = WsKey; exports.useInjectWebSocket = useInjectWebSocket; exports.useWebSocket = useWebSocket; exports.useWebSocketPlugin = useWebSocketPlugin;