Group Lines
描述
透過 testLine 方法建置路由群組,並透過 getGroupResult 方法從群組中找出性價比(CP 值)最佳的線路。這些方法協助您有效管理多條伺服器線路,確保流量分配至最佳性能的伺服器。
⚠️ 注意事項
- 當返回值為空字串(
"")時,請務必實現防呆機制,以防止出現錯誤或服務中斷。 - 拿到的結果(
result)中每個線路都需要進行測試,確保其可用性。如果線路無法使用,應根據需求切換至其他可用線路或實作回退機制。 type與group參數需要與之前透過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);參數
| 參數 | 類型 | 描述 |
|---|---|---|
type | String | 必填,指定類型,選項為 site 或 3r,分別對應網站或第三方服務。 |
group | String | 必填,用於標識路由群組的群組名稱。 |
lines | String | 必填,伺服器線路地址,格式為逗號分隔的字串(例如: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');使用案例
- 路由配置:為特定的群組名稱設置路由計劃,以方便流量分配到網站或服務。
- 多伺服器測試:配置多條伺服器線路以測試連接或分配流量。
- 群組管理:輕鬆管理不同群組的伺服器線路,提高配置效率與可維護性。
getGroupResult( type, group )
描述
getGroupResult 方法用於根據指定的 type 和 group 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);參數
| 參數 | 類型 | 描述 |
|---|---|---|
type | String | 必填,指定類型,選項為 site 或 3r。 |
group | String | 必填,路由群組的名稱。 |
範例使用
基本範例
以下範例獲取 "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('主要線路不可用,正在切換至回退線路...');
// 在這裡加入回退邏輯
}
}使用案例
- 實時路由:使客戶端能夠根據最新性能數據動態調整路由。
- 多地區優化:提供不同地區伺服器性能的洞察,確保最佳的用戶體驗。
- 防呆機制:支持在沒有可用線路的情況下無縫處理,避免服務中斷。