mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
37 lines
1014 B
TypeScript
37 lines
1014 B
TypeScript
import type http from "node:http";
|
|
import { applyWSSHandler } from "@trpc/server/adapters/ws";
|
|
import { WebSocketServer } from "ws";
|
|
import { appRouter } from "../api/root";
|
|
import { createTRPCContext } from "../api/trpc";
|
|
|
|
export const setupDrawerLogsWebSocketServer = (
|
|
server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>,
|
|
) => {
|
|
const wssTerm = new WebSocketServer({
|
|
noServer: true,
|
|
path: "/drawer-logs",
|
|
});
|
|
|
|
applyWSSHandler({
|
|
wss: wssTerm,
|
|
router: appRouter,
|
|
createContext: createTRPCContext as any,
|
|
});
|
|
server.on("upgrade", (req, socket, head) => {
|
|
const { pathname } = new URL(req.url || "", `http://${req.headers.host}`);
|
|
|
|
if (pathname === "/_next/webpack-hmr") {
|
|
return;
|
|
}
|
|
if (pathname === "/drawer-logs") {
|
|
wssTerm.handleUpgrade(req, socket, head, function done(ws) {
|
|
wssTerm.emit("connection", ws, req);
|
|
});
|
|
}
|
|
});
|
|
|
|
wssTerm.on("connection", async (ws, req) => {
|
|
const url = new URL(req.url || "", `http://${req.headers.host}`);
|
|
});
|
|
};
|