title: 一对一视频通话

本篇文档介绍如何建立一对一视频通话。在主叫的一方,这个过程包括发起通话请求,收到回应,关闭通话;在被叫的一方,这个过程包括收到一对一视频通话请求,接受/拒绝通话请求,关闭通话。

发起通话请求

使用 call(remoteUid,localStream,data) 来发起通话请求,该方法需要传递三个参数:

  • remoteUid: 通话接收方的 uiduid 是 WilddogAuth 为认证用户分配的唯一身份标识;
  • localStream: 通话发起方的本地媒体流;
  • options: 包括视频通话用户自定义信息、是否强制relay。

调用该方法返回 Conversation 实例,用于控制本次一对一视频通话。

  1. //如iceTransportPolicy字段值为relay 则表示开启强制relay
  2. var options = {'iceTransportPolicy':'','data':'userData'};
  3. mConversation = videoInstance.call(remoteUid,localStream,options);
  4. //监听参与者的stream_received事件,将对端的流媒体绑定到页面的video中
  5. mConversation.on('stream_received',function(stream){
  6. console.log('Receive stream' + stream);
  7. })

注:每个客户端同一时间只能存在一个通话。发起电话请求时,默认会挂断前一次通话。

收到通话请求

其他用户发来通话请求时,用户通过 videoInstance.on('called',called) 事件获得 Conversation 的实例:

例如,收到邀请后接受邀请

  1. videoInstance.on('called',function(incomingConversation){
  2. incomingConversation.accept(localStream)
  3. .then(function(conversation){
  4. //接受邀请成功,加入一对一视频通话
  5. });
  6. })

接受/拒绝通话请求

使用 accept(localStream) 来接受通话请求,该方法需要传入本地媒体流

  1. mConversation.accept(localStream).then(function(conversation) {});

使用 reject() 来拒绝通话请求:

  1. mConversation.reject();

接受/拒绝对方的通话请求后,对方会通过 mConversation.on('response',callback) 收到 ACCEPT / REJECT 状态的通知:

  1. mConversation.on('response',function(callStatus) {
  2. switch (callStatus){
  3. case 'ACCEPTED':
  4. console.log("log","通话被接受");
  5. break;
  6. case 'REJECTED':
  7. console.log("log","通话被拒绝");
  8. break;
  9. case 'BUSY':
  10. console.log("log","正忙");
  11. break;
  12. case 'TIMEOUT':
  13. console.log("log","超时");
  14. break;
  15. default:
  16. console.log("log","状态未识别");
  17. break;
  18. }
  19. })

关闭一对一视频通话

使用 close() 来取消呼叫或者结束通话。

  1. mConversation.close();
  2. mConversation=null;

通话被关闭后,对方会通过 mConversation.on('closed',callback) 收到通话结束的通知:

  1. mConversation.on('closed',function(){
  2. mConversation.close();
  3. mConversation = null;
  4. })