's'
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
/**
|
||||
* 将 HTTP API 根地址转为 WebSocket 根(用于 /android/scrcpy/ws)。
|
||||
* next dev 下若未设置 NEXT_PUBLIC_API_URL,浏览器会连到 :3000,WebSocket 升级通常无法被中间件代理;
|
||||
* 真流调试请设 NEXT_PUBLIC_API_URL 指向 uvicorn(例如 http://127.0.0.1:8001)。
|
||||
* next dev:HTTP 可走 middleware rewrite,但 WebSocket 升级通常不会转发,故在常见 dev 端口直连 uvicorn(与 middleware API_PROXY_TARGET 默认一致)。
|
||||
*/
|
||||
|
||||
const DEFAULT_DEV_API_PORT = "8001";
|
||||
|
||||
export function httpApiBaseToWsBase(apiBase: string): string {
|
||||
if (typeof window === "undefined") return "ws://127.0.0.1:8001";
|
||||
if (typeof window === "undefined") return `ws://127.0.0.1:${DEFAULT_DEV_API_PORT}`;
|
||||
const base = (apiBase || "").trim();
|
||||
if (base) {
|
||||
try {
|
||||
@@ -16,6 +17,24 @@ export function httpApiBaseToWsBase(apiBase: string): string {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
const pub =
|
||||
typeof process !== "undefined" && process.env.NEXT_PUBLIC_API_URL
|
||||
? String(process.env.NEXT_PUBLIC_API_URL).trim()
|
||||
: "";
|
||||
if (pub) {
|
||||
try {
|
||||
const u = new URL(pub, window.location.href);
|
||||
const proto = u.protocol === "https:" ? "wss:" : "ws:";
|
||||
return `${proto}//${u.host}`;
|
||||
} catch {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
const port = window.location.port;
|
||||
if (port === "3000" || port === "3001") {
|
||||
const h = window.location.hostname || "127.0.0.1";
|
||||
return `ws://${h}:${DEFAULT_DEV_API_PORT}`;
|
||||
}
|
||||
const { protocol, host } = window.location;
|
||||
const proto = protocol === "https:" ? "wss:" : "ws:";
|
||||
return `${proto}//${host}`;
|
||||
|
||||
Reference in New Issue
Block a user