vue-websocket-handler
Version:
a vue websocket handler library
119 lines (114 loc) • 3.35 kB
JavaScript
;
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;