2014-10-27 190 views
0

我正在開發使用Tokbox視頻聊天的網站,如果兩個用戶都連接並且他們的視頻可見,我必須運行一個計時器。Tokbox視頻聊天查詢

我正在使用下面的代碼,如果有人連接它調用start_countdown函數。

session.on('streamCreated', function(event) { 
    event.streams.forEach(function(stream) { 
     if(stream.connection.connectionId != session.connection.connectionId) { 
     // subscribe(stream); 
     console.log("New stream in the session: " + event); 
     // console.log(event); 
     // console.log(stream); 
     // start_countdown(); 
     } 
    }); 
    }); 

但我需要調用倒計時功能,如果兩個用戶都允許訪問他們的視頻。 任何人都可以幫忙。

回答

2

要理解的第一個想法是,由於您在客戶端代碼中執行此操作,因此每個參與者都將擁有自己的倒計時值,因爲兩個瀏覽器都獨立運行計時器。如果您只是試圖顯示兩個用戶在UI中連接(或剩餘)的時間,則這可能很好。但是如果你想要保持一個真正的時鐘,這種方法可能不是最好的。

接下來,在OpenTok中,當遠程流變爲可用時,從會話觸發streamCreated事件。當本地流開始發送時(在本地用戶授予訪問權限後),發佈者還會觸發streamCreated事件。如果您知道會話中只有2個用戶,則可以通過監聽這兩個事件來了解兩個用戶何時加入。以下是一個例子:

// Initialize flags 
var publishing = false; 
var subscribing = false; 

// TODO: create a publisher (either using session.publish() or OT.initPublisher()) and publish a stream after the session has connected 

// Listen to the events 
session.on('streamCreated', function(event) { 
    // event.stream will always be a remote stream so the connection comparison is unnecessary 
    // TODO: subscribe to the stream 
    subscribing = true; 
    // Check if both criteria have been met 
    checkStartCountdown(); 
}); 

publisher.on('streamCreated', function(event) { 
    publishing = true; 
    // Check if both criteria have been met 
    checkStartCountdown(); 
}); 

function checkStartCountdown() { 
    if (publishing && subscribing) { 
    // TODO: start_countdown is the function as you described in your question 
    start_countdown(); 
    } 
}