getResourceUrl()
描述
getResourceUrl() 是 JBLWebSocket 提供的一個方法,用於根據先前通過 connect(key, channel) 連接的特定頻道(channel)來獲取當前最佳的線路資源列表。它會根據系統的線路分析結果,按優先級返回一組資源 URL,優先級由高到低排列。
如果未在 connect 中指定頻道,則該方法會返回所有頻道的資源分析結果。
⚠️ 注意事項
需先調用
connect- 必須在調用
getResourceUrl方法之前,先通過connect方法完成連接,否則可能無法獲取資源資訊。
- 必須在調用
多頻道返回格式
- 當
connect未指定頻道時,返回的result是一個包含多個頻道的陣列,每個頻道都有各自的resources列表。
- 當
動態切換線路
- 根據返回的資源列表,應實現動態切換線路邏輯。例如,當當前線路播放中斷時,可以依次切換至後續優先級較低的線路。
語法
javascript
const resourceUrlObj = JBLWebSocket.getResourceUrl();回傳值
- 類型: Object
- 描述: 返回資源 URL 的結構化數據,包括頻道名稱和線路列表。
回傳值格式
javascript
{
result: [
{
"resources": [
"cdn1-mcn2.xcssmkj.com", // 最佳線路
"cdn1-mx2.st6689.com", // 第二佳線路
"cdn3-mcn2.xcssmkj.com", // 較差線路
"cdn3-mx2-s.ctyisheng.com" // 最差線路
],
"name": "MY" // 頻道名稱
},
// 如果 connect 沒指定 channel,可能有多個頻道結果
{
"resources": [
"cdn4-abc.xcssmkj.com",
"cdn2-def.st6689.com",
"cdn5-ghi.xcssmkj.com"
],
"name": "JP" // 另一個頻道名稱
}
]
}功能與用途
動態選擇最佳線路
- 該方法根據系統分析,返回按優先級排列的線路資源,讓播放器能自動選擇最佳的線路進行播放。
支援多頻道
- 如果未指定頻道,會返回所有頻道的線路資訊,適用於多頻道環境的資源管理。
高效資源利用
- 返回的資源列表按優先級排列,可動態切換至最優線路,提升用戶播放體驗。
使用範例
1. 獲取特定頻道的最佳線路
假設先前通過 connect 方法連接了頻道 MY,可以使用以下代碼獲取該頻道的線路資訊:
javascript
JBLWebSocket.connect('yourKey', 'MY'); // 連接指定頻道
const resourceUrlObj = JBLWebSocket.getResourceUrl(); // 獲取線路資訊
console.log(resourceUrlObj);
// 解析最優線路
const bestResource = resourceUrlObj.result[0]?.resources[0]; // 最佳線路
if (bestResource) {
console.log(`最佳線路為:${bestResource}`);
} else {
console.error('未能獲取最佳線路');
}2. 獲取所有頻道的線路資訊
如果未在 connect 中指定頻道,則返回所有頻道的線路列表:
javascript
JBLWebSocket.connect('yourKey'); // 不指定頻道
const resourceUrlObj = JBLWebSocket.getResourceUrl();
console.log(resourceUrlObj);
// 解析每個頻道的最佳線路
resourceUrlObj.result.forEach(channel => {
console.log(`頻道 ${channel.name} 的最佳線路:${channel.resources[0]}`);
});常見應用場景
- 在直播或點播播放環境中,根據實時線路表現動態選擇最佳線路,減少卡頓或中斷情況。
- 支援多頻道環境,允許後台系統針對不同頻道進行線路的動態分配和切換。
透過 JBLWebSocket.getResourceUrl(),開發者可以高效地獲取頻道資源資訊,並結合播放器實現最佳線路的自動選擇和動態切換,提升整體播放穩定性和用戶體驗。