首页 > 其他分享 >调用第三方接口实现呼叫台功能 -WebRTC

调用第三方接口实现呼叫台功能 -WebRTC

时间:2022-11-30 10:48:13浏览次数:61  
标签:WebRTC candidate offer 接口 otherConnection answer 呼叫 RTCPeerConnection event

调用第三方接口实现呼叫台功能WebRTC

WebRTC学习笔记——建立连接 - 简书 (jianshu.com)

(4条消息) webRTC(八):查看offer/answer 的 SDP_晓果博客的博客-CSDN博客

(4条消息) WebRTC源码研究(32)获取offer answer创建的SDP_极客雨露的博客-CSDN博客

(4条消息) webrtc 的 CreateOffer 过程分析_zhuiyuanqingya的博客-CSDN博客

WebRTC是一个开源的项目,可以提供浏览器,手机应用之间实时通信能力。

  • 主要JavaScript API

    • MediaStream 音视频流对象
    • RTCPeerConnection 端对端音视频连接对象
    • RTCDataChannel 端对端数据通道对象

 

 

 

1、由于浏览器API有相应的前缀,需要有两个兼容函数来首先处理一下:(这步作用不清楚照抄下来了)

function hasUserMedia() {
    navigator.getUserMedia = navigator.getUserMedia ||
        navigator.webkitGetUserMedia ||
        navigator.mozGetUserMedia ||
        navigator.msGetUserMedia;
    return !!navigator.getUserMedia;
}

function hasRTCPeerConnection() {
    window.RTCPeerConnection = window.RTCPeerConnection ||
        window.webkitRTCPeerConnection ||
        window.mozRTCPeerConnection ||
        window.msRTCPeerConnection;
    return !!window.RTCPeerConnection;
}
View Code

2、可以通过配置自己的STUN服务器地址,或者不写配置使用浏览器默认的STUN服务器地址,来创建两个RTCPeerConnection对象来模拟连接

  局域网可以不配置STUN服务器地址

  不给config,局域网内两个peer是可以找到对方的         配置个内网stun也没用     如果有网络穿透的需求,那需要自己搭建一个stun服务器

//var configuration = {
        //    //iceServers: [{ url: "stun:127.0.0.1:9876" }]
        //};
//,otherConnection是被调用方,被调用方是接收数据的
youConnection = new RTCPeerConnection(); otherConnection = new RTCPeerConnection();

3.通信双方交换ICE候选路径,也就是通过ICE获取到自己的IP和端口号后,再互相交换此信息(暂时也不清楚什么作用)

    youConnection.onicecandidate = function (event) {
        if (event.candidate) {
            console.log(event.candidate);
            otherConnection.addIceCandidate(new RTCIceCandidate(event.candidate));
        }
    };

    otherConnection.onicecandidate = function (event) {
        if (event.candidate) {
            console.log(event.candidate);
            youConnection.addIceCandidate(new RTCIceCandidate(event.candidate));
        }
    };

4.通信双方通过交换offer和answer来互换SDP信息  ---创建媒体协商

    var offerOptions={
        offerToRecceiveAudio: 1,
        offerToReceiveVideo: 1
    };

    youConnection.createOffer(offerOptions)
        .then(function(offer){
            console.log(offer);
            youConnection.setLocalDescription(offer);
            otherConnection.setRemoteDescription(offer);

            otherConnection.createAnswer(offerOptions)
                .then(function(answer){
                    console.log(answer);
                    otherConnection.setLocalDescription(answer);
                    youConnection.setRemoteDescription(answer);
                });
    });

 

标签:WebRTC,candidate,offer,接口,otherConnection,answer,呼叫,RTCPeerConnection,event
From: https://www.cnblogs.com/ZhuMeng-Chao/p/16937583.html

相关文章

  • RobotFramework ride接口自动化
    1、安装第三方插件requestspipinstall requests2、打开ride,接口自动化设计 3、请求接口设置为该接口的关键字 4、接口测试case ......
  • EventTarget.addEventListener() - Web API 接口参考
    EventTarget.addEventListener()-WebAPI接口参考  https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener#%E8%AF%AD%E6%B3%95  <......
  • 测接口遇到的坑
    1.不能直接把F12里面的表单数据直接复制过来,会报Badstring 错误代码如下:正确如下: 2. 冒号 【:】 必须是英文下的冒号3.引号必须是 双引号【 "H542 "】......
  • Python接口自动化核心模块 - 数据库操作和日志
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试进行接口......
  • python接口自动化44- requests 库使用 hook 机制
    前言requests是Hooks即钩子方法,用于在某个框架固定的某个流程执行是捎带执行(钩上)某个自定义的方法。requests库只支持一个response的钩子,即在响应返回时可以捎带执......
  • 18-接口和抽象类的综合案例
    练习1乒乓球运动员-类packageyundong;publicclasspingpongextendsathleteimplementsEnglish{publicpingpong(){}publicpingpong(String......
  • C#中抽象类和接口的区别
    一、抽象类:抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽......
  • 一篇文章,带你彻底掌握接口测试!
    一、什么是接口测试?所谓接口,是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试,则是通过接口的不同情况下的输入,去对比输......
  • gateway 网关接口防篡改验签
    gateway网关接口防篡改验签背景:为了尽可能降低接口在传输过程中,被抓包然后篡改接口内的参数的可能,我们可以考虑对接口的所有入参做签名验证,后端在网关依照相同的算法生成......
  • Spring Boot接口:用Swagger3实现接口文档
    SpringBoot接口:用Swagger3实现接口文档在生成接口文档之前,先了解下前置知识:OpenAPI规范,Swagger,SpringFox,Knife4J,SwaggerUI等之间的关系。一、OpenAPI规范(OAS)OpenAPI......