fix(webui): honor custom gateway port with Vite (#5076)

This commit is contained in:
chengyongru
2026-07-24 18:40:09 +08:00
committed by GitHub
parent 5be176a6a0
commit d3e4b35f2b
2 changed files with 22 additions and 1 deletions
+9 -1
View File
@@ -116,7 +116,15 @@ export function deriveWsUrl(
const host = window.location.hostname.includes(":")
? `[${window.location.hostname}]`
: window.location.hostname;
return `ws://${host}:8765${path}${query}`;
let scheme = "ws";
let port = "8765";
if (wsUrl && /^wss?:\/\//i.test(wsUrl)) {
const upstream = new URL(wsUrl);
scheme = upstream.protocol === "wss:" ? "wss" : "ws";
port = upstream.port;
}
const authority = port ? `${host}:${port}` : host;
return `${scheme}://${authority}${path}${query}`;
}
if (wsUrl && /^(wss?|nanobot-host):\/\//i.test(wsUrl)) {
const join = wsUrl.includes("?") ? "&" : "?";
+13
View File
@@ -32,6 +32,19 @@ describe("bootstrap helpers", () => {
);
});
it("keeps the gateway websocket port when Vite proxies a custom target", () => {
vi.stubGlobal("window", {
location: {
port: "5173",
hostname: "127.0.0.1",
protocol: "http:",
},
});
expect(deriveWsUrl("/ws", "tok", "ws://127.0.0.1:8899/ws")).toBe(
"ws://127.0.0.1:8899/ws?token=tok",
);
});
it("preserves the host socket bridge URL", () => {
expect(deriveWsUrl("/", "tok en", "nanobot-host://engine/")).toBe(
"nanobot-host://engine/?token=tok%20en",