Skip to content

getResourceUrl()

描述

getResourceUrl()JBLWebSocket 提供的一個方法,用於根據先前通過 connect(key, channel) 連接的特定頻道(channel)來獲取當前最佳的線路資源列表。它會根據系統的線路分析結果,按優先級返回一組資源 URL,優先級由高到低排列。

如果未在 connect 中指定頻道,則該方法會返回所有頻道的資源分析結果。

⚠️ 注意事項

  1. 需先調用 connect

    • 必須在調用 getResourceUrl 方法之前,先通過 connect 方法完成連接,否則可能無法獲取資源資訊。
  2. 多頻道返回格式

    • connect 未指定頻道時,返回的 result 是一個包含多個頻道的陣列,每個頻道都有各自的 resources 列表。
  3. 動態切換線路

    • 根據返回的資源列表,應實現動態切換線路邏輯。例如,當當前線路播放中斷時,可以依次切換至後續優先級較低的線路。

語法

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. 動態選擇最佳線路

    • 該方法根據系統分析,返回按優先級排列的線路資源,讓播放器能自動選擇最佳的線路進行播放。
  2. 支援多頻道

    • 如果未指定頻道,會返回所有頻道的線路資訊,適用於多頻道環境的資源管理。
  3. 高效資源利用

    • 返回的資源列表按優先級排列,可動態切換至最優線路,提升用戶播放體驗。

使用範例

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(),開發者可以高效地獲取頻道資源資訊,並結合播放器實現最佳線路的自動選擇和動態切換,提升整體播放穩定性和用戶體驗。