feat: enhance WebSocket management with connection status logging, error handling, and improved data parsing
This commit is contained in:
@@ -138,6 +138,7 @@ export const AppDataProvider = ({ children }: { children: React.ReactNode }) =>
|
||||
const { server = "", secret = "" } = clashInfo;
|
||||
if (!server) return () => {};
|
||||
|
||||
console.log(`[Connections][${AppDataProvider.name}] 正在连接: ${server}/connections`);
|
||||
const socket = createAuthSockette(`${server}/connections`, secret, {
|
||||
timeout: 5000,
|
||||
onmessage(event) {
|
||||
@@ -167,15 +168,29 @@ export const AppDataProvider = ({ children }: { children: React.ReactNode }) =>
|
||||
};
|
||||
});
|
||||
} catch (err) {
|
||||
console.error("[Connections] 解析数据错误:", err);
|
||||
console.error(`[Connections][${AppDataProvider.name}] 解析数据错误:`, err, event.data);
|
||||
}
|
||||
},
|
||||
onerror() {
|
||||
onopen: (event) => {
|
||||
console.log(`[Connections][${AppDataProvider.name}] WebSocket 连接已建立`, event);
|
||||
},
|
||||
onerror(event) {
|
||||
console.error(`[Connections][${AppDataProvider.name}] WebSocket 连接错误或达到最大重试次数`, event);
|
||||
next(null, { connections: [], uploadTotal: 0, downloadTotal: 0 });
|
||||
},
|
||||
onclose: (event) => {
|
||||
console.log(`[Connections][${AppDataProvider.name}] WebSocket 连接关闭`, event.code, event.reason);
|
||||
if (event.code !== 1000 && event.code !== 1001) {
|
||||
console.warn(`[Connections][${AppDataProvider.name}] 连接非正常关闭,重置数据`);
|
||||
next(null, { connections: [], uploadTotal: 0, downloadTotal: 0 });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return () => socket.close();
|
||||
return () => {
|
||||
console.log(`[Connections][${AppDataProvider.name}] 清理WebSocket连接`);
|
||||
socket.close();
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
@@ -188,18 +203,40 @@ export const AppDataProvider = ({ children }: { children: React.ReactNode }) =>
|
||||
const { server = "", secret = "" } = clashInfo;
|
||||
if (!server) return () => {};
|
||||
|
||||
console.log(`[Traffic][${AppDataProvider.name}] 正在连接: ${server}/traffic`);
|
||||
const socket = createAuthSockette(`${server}/traffic`, secret, {
|
||||
onmessage(event) {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
next(null, data);
|
||||
if (data && typeof data.up === 'number' && typeof data.down === 'number') {
|
||||
next(null, data);
|
||||
} else {
|
||||
console.warn(`[Traffic][${AppDataProvider.name}] 收到无效数据:`, data);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("[Traffic] 解析数据错误:", err);
|
||||
console.error(`[Traffic][${AppDataProvider.name}] 解析数据错误:`, err, event.data);
|
||||
}
|
||||
},
|
||||
onopen: (event) => {
|
||||
console.log(`[Traffic][${AppDataProvider.name}] WebSocket 连接已建立`, event);
|
||||
},
|
||||
onerror(event) {
|
||||
console.error(`[Traffic][${AppDataProvider.name}] WebSocket 连接错误或达到最大重试次数`, event);
|
||||
next(null, { up: 0, down: 0 });
|
||||
},
|
||||
onclose: (event) => {
|
||||
console.log(`[Traffic][${AppDataProvider.name}] WebSocket 连接关闭`, event.code, event.reason);
|
||||
if (event.code !== 1000 && event.code !== 1001) {
|
||||
console.warn(`[Traffic][${AppDataProvider.name}] 连接非正常关闭,重置数据`);
|
||||
next(null, { up: 0, down: 0 });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return () => socket.close();
|
||||
return () => {
|
||||
console.log(`[Traffic][${AppDataProvider.name}] 清理WebSocket连接`);
|
||||
socket.close();
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
@@ -211,18 +248,40 @@ export const AppDataProvider = ({ children }: { children: React.ReactNode }) =>
|
||||
const { server = "", secret = "" } = clashInfo;
|
||||
if (!server) return () => {};
|
||||
|
||||
console.log(`[Memory][${AppDataProvider.name}] 正在连接: ${server}/memory`);
|
||||
const socket = createAuthSockette(`${server}/memory`, secret, {
|
||||
onmessage(event) {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
next(null, data);
|
||||
if (data && typeof data.inuse === 'number') {
|
||||
next(null, data);
|
||||
} else {
|
||||
console.warn(`[Memory][${AppDataProvider.name}] 收到无效数据:`, data);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("[Memory] 解析数据错误:", err);
|
||||
console.error(`[Memory][${AppDataProvider.name}] 解析数据错误:`, err, event.data);
|
||||
}
|
||||
},
|
||||
onopen: (event) => {
|
||||
console.log(`[Memory][${AppDataProvider.name}] WebSocket 连接已建立`, event);
|
||||
},
|
||||
onerror(event) {
|
||||
console.error(`[Memory][${AppDataProvider.name}] WebSocket 连接错误或达到最大重试次数`, event);
|
||||
next(null, { inuse: 0 });
|
||||
},
|
||||
onclose: (event) => {
|
||||
console.log(`[Memory][${AppDataProvider.name}] WebSocket 连接关闭`, event.code, event.reason);
|
||||
if (event.code !== 1000 && event.code !== 1001) {
|
||||
console.warn(`[Memory][${AppDataProvider.name}] 连接非正常关闭,重置数据`);
|
||||
next(null, { inuse: 0 });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return () => socket.close();
|
||||
return () => {
|
||||
console.log(`[Memory][${AppDataProvider.name}] 清理WebSocket连接`);
|
||||
socket.close();
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user