Skip to content

Group Lines

描述

透過 testLine 方法建置路由群組,並透過 getGroupResult 方法從群組中找出性價比(CP 值)最佳的線路。這些方法協助您有效管理多條伺服器線路,確保流量分配至最佳性能的伺服器。

⚠️ 注意事項

  • 當返回值為空字串("")時,請務必實現防呆機制,以防止出現錯誤或服務中斷。
  • 拿到的結果(result)中每個線路都需要進行測試,確保其可用性。如果線路無法使用,應根據需求切換至其他可用線路或實作回退機制。
  • typegroup 參數需要與之前透過 testLine 設定的群組名稱保持一致,否則可能無法正確取得效能數據。

testLine( type, group, lines )

描述

testLine 方法用於根據指定的 group name 建立一個新的路由群組。此方法幫助構建和管理路由線路。支持可選參數,允許靈活配置測試類型、群組名稱以及伺服器線路。

語法

javascript
import JBLWebSocket from '@/assets/js/jbl.es.js';
const authorizationKey = ${Product authorization key};

JBLWebSocket.connect(authorizationKey);
JBLWebSocket.testLine(type, group, lines);

參數

參數類型描述
typeString必填,指定類型,選項為 site3r,分別對應網站或第三方服務。
groupString必填,用於標識路由群組的群組名稱。
linesString必填,伺服器線路地址,格式為逗號分隔的字串(例如:api.dome1.com,api.dome2.com)。

範例

基本範例

以下範例建立一個名為 "Group1" 的路由群組,包含兩條伺服器線路:

javascript
JBLWebSocket.testLine('site', 'Group1', 'api.dome1.com,api.dome2.com');

為第三方服務設定類型

此範例建立一個與第三方服務相關的路由群組:

javascript
JBLWebSocket.testLine('3r', 'ThirdPartyGroup', 'api.thirdparty.com,api.backup.com');

使用案例

  1. 路由配置:為特定的群組名稱設置路由計劃,以方便流量分配到網站或服務。
  2. 多伺服器測試:配置多條伺服器線路以測試連接或分配流量。
  3. 群組管理:輕鬆管理不同群組的伺服器線路,提高配置效率與可維護性。

getGroupResult( type, group )

描述

getGroupResult 方法用於根據指定的 typegroup name 獲取不同地區的伺服器線路的最新性能指標(速度和使用狀況)。此方法允許客戶端實時選擇最佳性能的路由。

語法

javascript
import JBLWebSocket from '@/assets/js/jbl.es.js';
const authorizationKey = ${Product authorization key};

JBLWebSocket.connect(authorizationKey);
let jblResult = await JBLWebSocket.getGroupResult(type, group);

參數

參數類型描述
typeString必填,指定類型,選項為 site3r
groupString必填,路由群組的名稱。

範例使用

基本範例

以下範例獲取 "Group1" 群組的最佳性能線路(類型為 site):

javascript
let jblResult = await JBLWebSocket.getGroupResult('site', 'Group1');
console.log(jblResult); 
// 範例輸出:{ site_Group1: 'api.dome1.com' }

結果處理

當返回值為空字串時,您需要實現自己的防呆機制以避免潛在的錯誤。例如:

javascript
let jblResult = await JBLWebSocket.getGroupResult('site', 'Group1');

if (!jblResult.site_Group1) {
    console.error('沒有可用的線路,請實作回退機制。');
    // 在這裡加入回退邏輯
} else {
    console.log(`最佳線路:${jblResult.site_Group1}`);

    // 測試線路是否可用的範例
    const fetchTestLine = async (url) => {
        try {
            const response = await fetch(url, { method: 'HEAD' });
            if (response.ok) {
                console.log(`${url} 可用。`);
                return true;
            } else {
                console.warn(`${url} 不可用。`);
                return false;
            }
        } catch (err) {
            console.error(`${url} 測試失敗:`, err);
            return false;
        }
    };

    const isAvailable = await fetchTestLine(jblResult.site_Group1);

    if (!isAvailable) {
        console.error('主要線路不可用,正在切換至回退線路...');
        // 在這裡加入回退邏輯
    }
}

使用案例

  1. 實時路由:使客戶端能夠根據最新性能數據動態調整路由。
  2. 多地區優化:提供不同地區伺服器性能的洞察,確保最佳的用戶體驗。
  3. 防呆機制:支持在沒有可用線路的情況下無縫處理,避免服務中斷。