forked from mirrors/homebox
2cbcc8bb1d
* rough implementation of WS based event system for server side notifications of mutation * fix test construction * fix deadlock on event bus * disable linter error * add item mutation events * remove old event bus code * refactor event system to use composables * refresh items table when new item is added * fix create form errors * cleanup unnecessary calls * fix importer erorrs + limit fn calls on import
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
// https://gist.github.com/ucw/67f7291c64777fb24341e8eae72bcd24
|
|
import { IncomingMessage } from "http";
|
|
import internal from "stream";
|
|
import { defineNuxtModule, logger } from "@nuxt/kit";
|
|
// eslint-disable-next-line
|
|
import { createProxyServer } from "http-proxy";
|
|
|
|
export default defineNuxtModule({
|
|
defaults: {
|
|
target: "ws://localhost:7745",
|
|
path: "/api/v1/ws",
|
|
},
|
|
meta: {
|
|
configKey: "websocketProxy",
|
|
name: "Websocket proxy",
|
|
},
|
|
setup(resolvedOptions, nuxt) {
|
|
if (!nuxt.options.dev || !resolvedOptions.target) {
|
|
return;
|
|
}
|
|
|
|
nuxt.hook("listen", server => {
|
|
const proxy = createProxyServer({
|
|
ws: true,
|
|
secure: false,
|
|
changeOrigin: true,
|
|
target: resolvedOptions.target,
|
|
});
|
|
|
|
const proxyFn = (req: IncomingMessage, socket: internal.Duplex, head: Buffer) => {
|
|
if (req.url && req.url.startsWith(resolvedOptions.path)) {
|
|
proxy.ws(req, socket, head);
|
|
}
|
|
};
|
|
|
|
server.on("upgrade", proxyFn);
|
|
|
|
nuxt.hook("close", () => {
|
|
server.off("upgrade", proxyFn);
|
|
proxy.close();
|
|
});
|
|
|
|
logger.info(`Websocket dev proxy started on ${resolvedOptions.path}`);
|
|
});
|
|
},
|
|
});
|