This commit is contained in:
beabigegg
2025-09-23 08:27:58 +08:00
parent ed9250db1a
commit 0a89c19fc9
11 changed files with 230 additions and 38 deletions

View File

@@ -20,6 +20,16 @@ class WebSocketService {
* 初始化並連接 WebSocket
*/
connect() {
// 檢查 WebSocket 是否被禁用
const devMode = import.meta.env.VITE_DEV_MODE === 'true'
const isProd = import.meta.env.PROD
const wsDisabled = import.meta.env.VITE_DISABLE_WEBSOCKET === 'true'
if (!devMode || isProd || wsDisabled) {
console.log('🔌 [WebSocket] WebSocket 連接已禁用,跳過連接')
return
}
if (this.socket) {
return
}
@@ -28,7 +38,7 @@ class WebSocketService {
// 建立 Socket.IO 連接
const wsUrl = import.meta.env.VITE_WS_BASE_URL || 'http://127.0.0.1:12010'
console.log('🔌 [WebSocket] 嘗試連接到:', wsUrl)
this.socket = io(wsUrl, {
path: '/socket.io/',
transports: ['polling'],
@@ -271,6 +281,15 @@ class WebSocketService {
* @param {string} jobUuid - 任務 UUID
*/
subscribeToJob(jobUuid) {
// 檢查 WebSocket 是否被禁用
const devMode = import.meta.env.VITE_DEV_MODE === 'true'
const isProd = import.meta.env.PROD
const wsDisabled = import.meta.env.VITE_DISABLE_WEBSOCKET === 'true'
if (!devMode || isProd || wsDisabled) {
return // WebSocket 被禁用,靜默返回
}
if (!this.socket || !this.isConnected) {
// 靜默處理,避免控制台警告
return
@@ -334,6 +353,15 @@ class WebSocketService {
* @param {Object} data - 事件資料
*/
emit(event, data) {
// 檢查 WebSocket 是否被禁用
const devMode = import.meta.env.VITE_DEV_MODE === 'true'
const isProd = import.meta.env.PROD
const wsDisabled = import.meta.env.VITE_DISABLE_WEBSOCKET === 'true'
if (!devMode || isProd || wsDisabled) {
return // WebSocket 被禁用,靜默返回
}
if (this.socket && this.isConnected) {
this.socket.emit(event, data)
}
@@ -345,6 +373,15 @@ class WebSocketService {
* @param {Function} callback - 回調函數
*/
on(event, callback) {
// 檢查 WebSocket 是否被禁用
const devMode = import.meta.env.VITE_DEV_MODE === 'true'
const isProd = import.meta.env.PROD
const wsDisabled = import.meta.env.VITE_DISABLE_WEBSOCKET === 'true'
if (!devMode || isProd || wsDisabled) {
return // WebSocket 被禁用,靜默返回
}
if (this.socket) {
this.socket.on(event, callback)
}
@@ -401,6 +438,17 @@ export const websocketService = new WebSocketService()
// 自動連接(在需要時)
export const initWebSocket = () => {
// 檢查是否禁用 WebSocket (多種方式)
const devMode = import.meta.env.VITE_DEV_MODE === 'true'
const isProd = import.meta.env.PROD
const wsDisabled = import.meta.env.VITE_DISABLE_WEBSOCKET === 'true'
if (!devMode || isProd || wsDisabled) {
console.log('🔌 [WebSocket] WebSocket 連接已禁用', { devMode, isProd, wsDisabled })
return
}
console.log('🔌 [WebSocket] 嘗試初始化 WebSocket 連接')
websocketService.connect()
}