而且伴随着webrtc技术的成熟,该领域可能将成为下一个技术热点,但是传统的webrtc应用开发存在一定的复杂性,本文将介绍如何利用peerjs这一开源框架来简化webrtc开发。 而peerjs开源项目简化了webrtc的开发过程,把SDP交换、ICE candidate这些偏底层的细节都做了封装,开发人员只需要关注应用本身就行了。 更多细节可查阅peerjs的api在线文档 (注:peerjs的所有api只有一页,估计15分钟左右就全部看一圈) peerjs的服务端(即信令服务器)很简单,只需要下面这段nodejs代码即可: var 三、实战练习 下面选几个常用的场景,利用peerjs实战一番(文末最后有示例源码链接) - 注:建议使用chrome谷歌浏览器运行下面的示例。 从浏览器的console控制台日志可以清楚的看到peerjs,已经把createOffer、createAnswer,以及ICE candidate这些细节都内部消化掉了。
webRTC机制和peerjs库的介绍在其他博客中已经有了很多介绍,这里我直接搬运过来 一、webrtc回顾 WebRTC(Web Real-Time Communication)即:网页即时通信。 二、下载引入peerjs vue环境下引入第三方库,并且不是使用npm包的形式,在官网下载peer.js,放入src/tools/目录里 在聊天页面的vue中,引入这个函数库 import ".. 服务,拿到peerjs的id,这个ID就是我们通话的身份ID,非常重要 //语音请求 callPhone(){ var _ }); 同样,后端客服在接收到访客请求通话的指令后,就初始化自己的peerjs ID,然后调用后端接口,把自己的peerjs ID传递过来(这里暂时先略过客服端的操作) 我们在WebSocket中接收到客服的 (_this.peerjs.kefuPeerId, _this.peerjs.localStream); call.on('stream', function(remoteStream
remoteVideo.srcObject = remoteStream; remoteVideo.play(); _this.peerjs.remoteVideoStream remoteAudio.srcObject = remoteStream; remoteAudio.play(); _this.peerjs.remoteAudioStream
自己的ID是自动获取的 ,然后输入对方的ID , 对方的ID可以这样获取 , 再打开新的浏览器或者手机也可以 原理是 利用js的h5新特性获取摄像头视频流, 通过peerjs的服务交换双方的信息 , cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/<em>peerjs</em> /1.3.1/<em>peerjs</em>.min.js"></script> </head> <body>
• PeerJS PeerJS[16]的存在时间几乎和WebRTC一样长。在相当长的一段时间里,其代码库一直没有得到维护或更新以适应所支持的浏览器。这种状态似乎延续到了今天。 多年以来,PeerJS几经易手并更换维护者,今年年初还在招募维护者[17]。 事不宜迟,让我们开始谈钱时刻吧! 谈钱时刻 如果有人决定使用PeerJS并将它直接集成到自己的应用怎么办? 在使用PeerJS时需要注意的问题同样适用于Simple-Peer。如果你要在二者之中选择一个,选择Simple-Peer吧,因为它的代码是更地道的JavaScript。 谈钱时刻 可以阅读PeerJS的谈钱时刻,因为它们所遵循的规则是一样的。 • Matrix Matrix[19]是一个“用于安全、去中心化通信的开放网络”。 / [17] https://github.com/peers/peerjs/issues/938 [18] https://github.com/feross/simple-peer/commits/
Otr.to基于开源的Javascript库,如Crypto-js、PeerJS,同时还采用了非记录模式(Off-the-Record)通讯协议的技术。
break; case "callpeer": if(_this.peerjs.visitorId
这里可以使用 antd 作为 UI 库: npm i antd 最后在 index.js 中引入 CSS: import 'antd/dist/antd.css' 布局 安装 peer.js: npm i peerjs
background: 'rgba(0, 0, 0, 0.7)' }); _this.initPeerjs();//初始化peerjs this.loadingTimerTimeoutClose(); this.isVideo=true; //初始化peerjs
你可能需要借助专业的流媒体平台(如Wowza, Red5, AWS Media Services 或者 Google Cloud Video Intelligence 等),或者利用开源项目(如 jsmpeg, PeerJS