mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
fix(web): derive WebSocket URL from browser location instead of backend (#2405)
The frontend previously used ws_url returned by /api/pico/token, which is built from the launcher's own port. Behind a reverse proxy this can produce incorrect URLs (e.g. ws://localhost:18800 instead of the proxy's public address). Since the launcher already proxies /pico/ws on the same port, the frontend can simply use window.location.host to construct the WebSocket URL, which is always correct regardless of proxy layers. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -15,7 +15,6 @@ import {
|
||||
import {
|
||||
invalidateSocket,
|
||||
isCurrentSocket,
|
||||
normalizeWsUrlForBrowser,
|
||||
} from "@/features/chat/websocket"
|
||||
import i18n from "@/i18n"
|
||||
import {
|
||||
@@ -135,7 +134,7 @@ export async function connectChat() {
|
||||
updateChatStore({ connectionState: "connecting" })
|
||||
|
||||
try {
|
||||
const { token, ws_url } = await getPicoToken()
|
||||
const { token } = await getPicoToken()
|
||||
const sessionId = activeSessionIdRef
|
||||
|
||||
if (generation !== connectionGeneration) {
|
||||
@@ -151,8 +150,9 @@ export async function connectChat() {
|
||||
return
|
||||
}
|
||||
|
||||
const finalWsUrl = normalizeWsUrlForBrowser(ws_url)
|
||||
const url = `${finalWsUrl}?session_id=${encodeURIComponent(sessionId)}`
|
||||
const wsScheme = window.location.protocol === "https:" ? "wss:" : "ws:"
|
||||
const wsUrl = `${wsScheme}//${window.location.host}/pico/ws`
|
||||
const url = `${wsUrl}?session_id=${encodeURIComponent(sessionId)}`
|
||||
const socket = new WebSocket(url, [`token.${token}`])
|
||||
|
||||
if (generation !== connectionGeneration) {
|
||||
|
||||
Reference in New Issue
Block a user