OpenVidu 教程(1) - openvidu-hello-world

這是使用 OpenVidu 最簡單的教程。 它具有進行群組視頻通話的基本功能。 您只需幾分鐘就能讓第一個應用程序正常運行!

一、如何運行這個教程

1) 克隆教程:

git clone https://github.com/OpenVidu/openvidu-tutorials.git

2) 您需要在開發計算機中安裝http Web server 才能執行本教程。 如果安裝了node.js,則可以使用 http-server 來提供應用程序文件。 通過如下命令安裝:

npm install -g http-server

3) 運行教程:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

http-server -S -C cert.pem openvidu-tutorials/openvidu-hello-world/web

4) openvidu-server 和 Kurento Media Server 必須在您開發計算機中啟動並運行。 最簡單的方法是使用Docker容器運行(也可以參考前一篇文字的安裝方式):

docker run -p 4443:4443 --rm -e openvidu.secret=MY_SECRET openvidu/openvidu-server-kms

5)一旦伺服器運行,我們可以使用瀏覽器打開https://localhost:8080來測試應用程序。 第一次使用docker容器並加入視頻通話時,會提示您接受openvidu-server的自簽名證書。

如果您使用的是Windows,請閱讀此常見問題解答以正確運行本教程

要了解使用OpenVidu開發的一些技巧,請查看此常見問題解答

二、源碼解析

這個應用程序非常簡單。 它只有4個文件:

  • openvidu-browser-VERSION.js:openvidu-browser 庫文件, 您不必操縱此文件。
  • app.js:示例應用程序主JavaScritp文件,它使用了 openvidu-browser-VERSION.js。
  • style.css:一些用於樣式index.html的CSS類。
  • index.html:表單的HTML代碼,用於連接視頻通話。 它鏈接到兩個JavaScript文件:

<script src="openvidu-browser-VERSION.js"></script>
<scriptsrc="app.js"></script>

讓我們看看在 app.js 中如何使用openvidu-browser-VERSION.js:

第一行聲明了代碼中不同會話點所需的變數

var OV;
var session;

OV 是我們的 OpenVidu 對象(libray的入口點)。 session是我們視頻通話的連接。 作為joinSession() 方法中的第一句,將識別我們視頻調用的變數進行初始化,該視頻調用從HTML輸入中檢索值。

var mySessionId = document.getElementById("sessionId").value;

初始化 new session 及其 event

OV = new OpenVidu();
session = OV.initSession();

session.on(streamCreated, function (event) {
session.subscribe(event.stream, subscriber);
});

正如您在代碼中看到的,該過程非常簡單:獲取OpenVidu對象並使用它初始化Session對象。

然後,您可以訂閱會話所需的所有事件。 在這種情況下,我們只想訂閱會話中正在創建的每個流:在streamCreated上,我們訂閱特定的流,在event.stream屬性中可用。

您可以查看參考文檔中的所有事件

從OpenVidu Server獲取token

注意:這就是本教程是一個不安全的應用程序的原因。 我們需要向OpenVidu Server請求用戶令牌才能連接到我們的會話。 這個過程應該完全在我們的伺服器端進行,而不是在我們的客戶端。 但是由於本教程中缺少應用程序後端,JavaScript代碼本身將對OpenVidu Server執行POST操作

getToken(mySessionId).then(token => {
// See next point to see how to connect to the session using token
});

現在我們需要一個來自OpenVidu Server的token。 在生產環境中,我們使用 REST API,OpenVidu Java Client 或 OpenVidu Node Client 在應用程序後端執行此操作。 在這裡我們已經在一個getToken()方法中實現了向 OpenVidu Server 發送POST請求,這個 getToken 返回一個帶有token的Promise。 沒有太多細節,這個方法對 OpenVidu Server 執行兩個ajax請求,傳遞 OpenVidu Server secret來驗證它們:

  • 首先,ajax執行POST請求到 /api /sessions(我們發送一個customSessionId欄位來命名會話,並使用從HTML輸入中檢索到的mySessionId值)
  • 第二個Ajax將POST請求傳遞給 /api/token(我們發送一個sessionId欄位來將該token分配給同一個會話)

您可以在GitHub倉庫中詳細檢查此方法。

使用token連接到session

getToken(mySessionId).then(token => {

session.connect(token)
.then(() => {
document.getElementById("session-header").innerText = mySessionId;
document.getElementById("join").style.display = "none";
document.getElementById("session").style.display = "block";

var publisher = OV.initPublisher("publisher");
session.publish(publisher);
})
.catch(error => {
console.log("There was an error connecting to the session:", error.code, error.message);
});
});

我們只需要調用session.connect 並向 OpenVidu Server 傳遞最近獲取到的token。 此方法返回您可以訂閱的Promise。

如果訂閱成功,我們首先將視圖設置為活動視頻會話。 然後繼續發布我們的攝像頭。 為此,我們需要使用 OpenVidu.initPublisher 方法生成發布者,一個顯示我們網路攝像頭的新HTML視頻將被添加到ID為「publisher」的元素內的頁面中。

最後比較重要的一點,我們發布這個 publisher 對象需要使用 session.publish。 此時,連接到此會話的其他用戶將觸發其自己的streamCreated事件,並可以開始觀看我們的網路攝像頭。

斷開會話

session.disconnect();

無論何時我們想要用戶斷開會話,我們只需要調用session.disconnect方法。 在這裡它會調用內部的 leaveSession 函數,當用戶點擊「LEAVE」按鈕時觸發。 該功能也將頁面返回到「Join session」視圖。


推薦閱讀:

TAG:編程 | WebRTC | 計算機科學 |