MCPcopy Create free account
hub / github.com/TeleBoxOrg/TeleBox_Plugins / quickPingTest

Function quickPingTest

speedtest/speedtest.ts:812–865  ·  view source on GitHub ↗

* 轻量级服务器ping测试

(serverId: number)

Source from the content-addressed store, hash-verified

810
811 // 只进行ping测试,不执行完整的速度测试
812 const command = `"${SPEEDTEST_PATH}" --accept-license --accept-gdpr -f json -s ${serverId} --progress=no --selection-details`;
813 const { stdout, stderr } = await execAsync(command, {
814 timeout: 8000 // 8秒超时,只需要ping测试
815 });
816
817 if (stderr) {
818 if (stderr.includes("NoServersException") || stderr.includes("Server not found")) {
819 return { available: false, error: "服务器不存在" };
820 }
821 if (stderr.includes("Timeout") || stderr.includes("timeout")) {
822 return { available: false, error: "连接超时" };
823 }
824 if (stderr.includes("Cannot read from socket")) {
825 return { available: false, error: "网络连接失败" };
826 }
827 }
828
829 // 如果能获取到输出,说明服务器基本可用
830 if (stdout && stdout.trim()) {
831 try {
832 const result = JSON.parse(stdout);
833 if (result.ping && result.ping.latency) {
834 return { available: true, ping: result.ping.latency };
835 }
836 if (result.server && result.server.id === serverId) {
837 return { available: true };
838 }
839 } catch (parseError) {
840 // JSON解析失败,但有输出说明服务器响应了
841 return { available: true };
842 }
843 }
844
845 return { available: true };
846 } catch (error: any) {
847 console.error(`Server ${serverId} ping test failed:`, error);
848
849 if (error.code === 'ETIMEDOUT') {
850 return { available: false, error: "连接超时" };
851 }
852 if (error.message?.includes('NoServersException')) {
853 return { available: false, error: "服务器不可用" };
854 }
855
856 return { available: false, error: error.message || "未知错误" };
857 }
858}
859
860/**
861 * 简化的服务器可用性检测 - 仅检查服务器是否在列表中
862 */
863async function testServerAvailability(serverId: number): Promise<{ available: boolean; ping?: number; error?: string }> {
864 try {
865 // 只检查服务器是否在可用列表中,不进行实际ping测试
866 const allServers = await getAllServers();
867 const serverExists = allServers.find(s => s.id === serverId);
868

Callers

nothing calls this directly

Calls 2

errorMethod · 0.80
downloadCliFunction · 0.70

Tested by

no test coverage detected