From 6d643374679576f7dfbd392f9ff5439012037f8d Mon Sep 17 00:00:00 2001 From: chyoo Date: Wed, 8 Jul 2026 09:42:59 +0900 Subject: [PATCH] route lms admin socket through lms api path --- src/components/InstructorChatPanel.tsx | 6 ++++-- src/layouts/InstructorLayout.tsx | 5 +++-- src/lib/chat.ts | 4 ++++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/InstructorChatPanel.tsx b/src/components/InstructorChatPanel.tsx index cdd20a4..485ee0e 100644 --- a/src/components/InstructorChatPanel.tsx +++ b/src/components/InstructorChatPanel.tsx @@ -3,7 +3,8 @@ import { ArrowLeft, ChevronRight, Loader2, MessageCircle, Send, UserRound, X } f import { io } from 'socket.io-client'; import type { Socket } from 'socket.io-client'; import { - CHAT_SOCKET_BASE_URL, + CHAT_SOCKET_ORIGIN, + CHAT_SOCKET_PATH, createInstructorChatMessage, getInstructorChatThread, listInstructorChatThreads, @@ -100,8 +101,9 @@ export function InstructorChatPanel({ session, open, initialThreadId = null, ini useEffect(() => { if (!open) return; - const socket: Socket = io(CHAT_SOCKET_BASE_URL, { + const socket: Socket = io(CHAT_SOCKET_ORIGIN, { auth: { token: session.accessToken }, + path: CHAT_SOCKET_PATH, transports: ['websocket', 'polling'], }); diff --git a/src/layouts/InstructorLayout.tsx b/src/layouts/InstructorLayout.tsx index 4306cba..82c35d1 100644 --- a/src/layouts/InstructorLayout.tsx +++ b/src/layouts/InstructorLayout.tsx @@ -26,7 +26,7 @@ import { InstructorChatPanel } from '../components/InstructorChatPanel'; import { useToast } from '../components/ToastProvider'; import autonomyLogo from '../assets/icon.png'; import { useProfileAvatar } from '../hooks/useProfileAvatar'; -import { CHAT_SOCKET_BASE_URL } from '../lib/chat'; +import { CHAT_SOCKET_ORIGIN, CHAT_SOCKET_PATH } from '../lib/chat'; import type { InstructorCourse } from '../lib/courses'; import { deleteProfileAvatar, notifyProfileAvatarDeleted, notifyProfileAvatarUpdated, resizeImageToWebp, uploadProfileAvatar } from '../lib/profileAvatar'; import { navItems, type AppRoute } from '../routes'; @@ -157,8 +157,9 @@ export function InstructorLayout({ session, route, onNavigate, onLogout, courses }, [notificationPage, notificationTotalPages]); useEffect(() => { - const socket: Socket = io(CHAT_SOCKET_BASE_URL, { + const socket: Socket = io(CHAT_SOCKET_ORIGIN, { auth: { token: session.accessToken }, + path: CHAT_SOCKET_PATH, transports: ['websocket', 'polling'], }); diff --git a/src/lib/chat.ts b/src/lib/chat.ts index 3d0a8a6..012b4bf 100644 --- a/src/lib/chat.ts +++ b/src/lib/chat.ts @@ -24,6 +24,10 @@ export type InstructorChatThread = { const CHAT_API_BASE_URL = (import.meta.env.VITE_API_BASE_URL ?? 'https://workspace.autonomystudio.net/lms-api/api').replace(/\/+$/, ''); export const CHAT_SOCKET_BASE_URL = CHAT_API_BASE_URL.replace(/\/api$/, ''); +const CHAT_SOCKET_URL = new URL(CHAT_SOCKET_BASE_URL || '/', window.location.origin); +const CHAT_SOCKET_PREFIX = CHAT_SOCKET_URL.pathname.replace(/\/+$/, ''); +export const CHAT_SOCKET_ORIGIN = CHAT_SOCKET_URL.origin; +export const CHAT_SOCKET_PATH = `${CHAT_SOCKET_PREFIX}/socket.io`; type ChatThreadsPayload = { threads?: unknown[];