2014-07-01 47 views
1

我試圖實現基於應用程序的opentok。 我記住的項目是一個應用程序,一些訂閱者,每個訂閱者都可以從他們的應用程序電話與操作員交談,操作員必須留在計算機上。 只需通過應用程序調用操作員並在服務器中記錄呼叫。 我認爲我必須創建兩個應用程序:一個是通過電話撥打電話並將其連接到會話,另一個是在計算機上已打開的會話,該通話也記錄了通話。或不? 或者,也可以在操作員計算機上打開的會話和人員可以通過電話連接會話? 怎麼可能創建一個只有一個tokenId的一對一視頻聊天?每次一個人打電話給運營商時,我如何創建一個新電話? 如果任何人有意見,教程或有關如何啓動請回答提示.... 預先感謝OpenTok建議如何開始構建應用程序

I'have創建基於教程與index.js這裏面的代碼科爾多瓦應用

onDeviceReady: function() { 

    // Getting OpenTokRTC's room's credentials. 
    // To use your own room in opentokrtc, change cordova to room of your choice 
    // -> ie: https://opentokrtc.com/myroom.json 
    // To use your own credentials 
    // replace data.apiKey, data.sid, and data.token with your own 

    var apiKey = "xxx"; 
    var sessionId = "xxxx"; 
    var token = "xxx"; 

    // Very simple OpenTok Code for group video chat 
    var publisher = TB.initPublisher(apiKey,'myPublisherDiv'); 

    var session = TB.initSession(apiKey, sessionId); 
    session.on({ 
    'streamCreated': function(event){ 
     var div = document.createElement('div'); 
     div.setAttribute('id', 'stream' + event.stream.streamId); 
     document.body.appendChild(div); 
     session.subscribe(event.stream, div.id, {subscribeToAudio: false}); 
    } 
    }); 

    session.connect(token, function(){ 
    session.publish(publisher); 
    }); 

}, 
    // Update DOM on a Received Event 
    receivedEvent: function(id) { 
    } 

而且在我的網頁應用程序,我寫從opentok教程採取了這種代碼

<div id="myPublisherDiv"></div> 
    <script type="text/javascript"> 
     // Initialize API key, session, and token... 
     // Think of a session as a room, and a token as the key to get in to the room 
     // Sessions and tokens are generated on your server and passed down to the client 
     var apiKey = "xxx"; 
     var sessionId = "xxx"; 
     var token = "xxx"; 

     var publisher = TB.initPublisher(apiKey,'myPublisherDiv'); 
     var session = TB.initSession(sessionId); 

     session.addEventListener('sessionConnected', sessionConnectedHandler); 
     session.connect(apiKey, token); 

     function sessionConnectedHandler(event) { 
     var publisher = TB.initPublisher(apiKey, 'myPublisherDiv'); 
     session.publish(publisher); 
     } 

    </script> 

我的問題是:我怎麼能建立與iPhone採取的網頁應用程序內的視頻流的第二個div? 另一件令我困惑的事情是:在所有情況下,我必須使用SDK來設置我的服務器?

回答

0

你可以讓每個人都連接到同一個會話。當你得到connectionCreated事件時,將它存儲在一個對象中。當它的一個人的轉彎,信號他開始發佈,然後訂閱他流:

例如,在運營商側:

var connections = {}; 
session.on('connectionCreated', function(event){ 
    connections[event.connection.connectionId] = event.connection.connectionId; 
    // Create a button for that stream 
}); 

當操作者點擊流,他想連接到,

// retrieve streamId from button, disconnect from other streams 
session.signal(
    { 
    type: "publish", 
    data: "operator", 
    to: connections[connectionIdFromButton] 
    }, 
    function(){...} 
); 

當用戶獲取信號時,開始發佈。

session.on("signal:publish", function(event){ 
    session.publish(...) 
}); 
+0

mmm在理論上看起來很簡單,但您能否更具體些?例如一行代碼?現在,我可以將我的設備連接到我的網站上的JavaScript代碼頁面,但是我只能在我的設備上看到兩個視頻不在我的網頁上...如果您要我發佈我的代碼 – emanuele

+0

如果更新您的問題以包括樣品代碼我可以給你一些建議。並看看你做錯了什麼。 – songz

+0

好的,謝謝你的回答! – emanuele

相關問題