1

我正在尝试实现基于 opentok 的应用程序。我想到的项目是一个应用程序,一些订阅者,每个订阅者都可以通过他们的应用程序电话与操作员交谈,操作员必须留在电脑上。只需应用程序必须呼叫接线员并将呼叫记录在服务器中。我认为我必须创建两个应用程序:一个从手机拨打电话并将其连接到会话,另一个在计算机上已经打开会话并记录通话。或不?或者,会话已经在操作员计算机上打开,人们可以通过电话在会话中连接?如何仅使用一个 tokenId 创建一对一的视频聊天?每次有人打电话给接线员时,我如何创建一个新电话?如果有人有关于如何开始的建议、教程或提示,请回答....

我已经根据教程在 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 设置我的服务器?

4

1 回答 1

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(...)
});
于 2014-07-01T17:44:07.100 回答