亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

webrtc 局域網內文本通信

2024-04-27 15:10:30
字體:
來源:轉載
供稿:網友

環境

Microsoft Windows [版本 10.0.14393] Google Chrome 版本 55.0.2883.87 m (64-bit)

相關API請參照MDN和webrtc.org。

主要流程

簡單通信流程:

Created with Rapha?l 2.1.0呼叫方呼叫方接聽方接聽方createDataChannelcreateOffer獲得和傳輸本身Description 和 Candidate接收對方傳輸Description 和 CandidatecreateAnswer獲得和傳輸本身Description 和 CandidateOK

代碼

傳輸Description 和 Candidate 需要通過其他通信通道進行,例如Ajax,websocket,這里采用手動復制粘貼內容代替

index.html

<html><head><meta charset='utf-8' ><title>WEBRTC</title><style>#log{ border:2px solid red; width:500px; height:500px;}.tip{color:blue;}.message{color:green;}</style></head><body><div class="container"> <div><input id="callBtn" value="請求呼叫" type="button"/><input id="myDescription" type="text" placeholder="我的Description" /><input id="myCandidate" type="text" placeholder="我的Candidate" /></div> <div><input id="anDescription" type="text" placeholder="對方的Description" /><input id="anCandidate" type="text" placeholder="對方的Candidate" /><input id="anBtn" value="確定" type="button"/></div> <div><input id="answerBtn" value="接聽" type="button"/><input id="hangBtn" value="掛機" type="button"/></div> <div><input id="contentInput" type="text" placeholder="發送文字內容" /><input id="sendBtn" value="發送" type="button"/></div> <div id="log"> <div class="tip">1.呼叫方點擊 請求呼叫 </div> </div></div> <script>/****操作提示*/function tip(msg){ var d=document.createElement("div"); d.className="tip"; d.innerHTML=msg; log.appendChild(d);}/****操作提示*/function message(msg){ var d=document.createElement("div"); d.className="message"; d.innerHTML=msg; log.appendChild(d);}</script><script src="index.js"> </script></body></html>

index.js

//主要流程 ,其他方式傳輸 Description 和 Candidate//呼叫方 createDataChannel->createOffer->獲得和傳輸本身Description 和 Candidate ↓↓ -- >接收和設置對方傳輸Description 和 Candidate -->OK //接聽方 接收對方傳輸Description 和 Candidate -->createAnswer --> 獲得和傳輸本身Description 和 Candidate ↑↑ -->OKvar RTCPeerConnection=RTCPeerConnection||webkitRTCPeerConnection;var pc; var mediaConstraints = null; var conf=null; pc = new RTCPeerConnection(conf,mediaConstraints);pc.onconnectionstatechange=function(){ console.log(arguments);}; pc.ondatachannel=function(e){ console.log("傳輸通道打開",arguments); channel =e.channel; channel.onopen = function() { tip("等待接收消息"); console.log("接收通道打開",arguments); }; channel.onclose = function() { tip("斷開消息通道"); console.log("接收通道關閉",arguments); }; channel.onmessage = function(e) { console.log("接收通道信息",arguments); message("收到:"+e.data); };}; pc.onicecandidate=function(e){ if(e.candidate) { //這里傳輸candidate給對方 myCandidate.value=JSON.stringify(e.candidate); } console.log("獲取ice",arguments);}; pc.oniceconnectionstatechange=function(){ console.log(arguments);}; pc.onidentityresult=function(){ console.log(arguments);}; pc.onidpassertionerror=function(){ console.log(arguments);}; pc.onidpvalidationerror=function(){ console.log(arguments);}; pc.onnegotiationneeded=function(){ console.log("需要協商",arguments); pc.createOffer().then(function(offer) { console.log("分配內容",offer); myDescription.value=JSON.stringify(offer); //這里傳輸Description 給接聽方 , 手動復制 tip("2.將 我的Description 和 Candidate復制到 接聽方對應的 對方的Description 和 Candidate ,接聽方點擊接聽"); return pc.setLocalDescription(offer); });}; pc.onpeeridentity=function(){ console.log(arguments);}; pc.onremovestream=function(){ console.log(arguments);}; pc.onsignalingstatechange=function(){ console.log(arguments);}; pc.ontrack=function(){ console.log(arguments);}; var channel;//請求呼叫callBtn.onclick=function(){ channel =pc.createDataChannel("hehe",mediaConstraints);//可以發送文字什么的 channel.onopen = function() { tip("可以發送消息"); console.log("hehe通道打開",arguments); }; channel.onclose = function() { tip("關閉消息通道"); console.log("hehe通道關閉",arguments); }; channel.onmessage = function(e) { console.log("hehe通道信息",arguments); message("收到:"+e.data); };};sendBtn.onclick=function(){ channel.send(contentInput.value);};//接聽輸入的請求地址answerBtn.onclick=function(){ //這里獲取傳輸過來的 Description ,手動粘貼 pc.setRemoteDescription(new RTCsessionDescription(JSON.parse(anDescription.value))); pc.createAnswer().then(function(ans){ console.log("分配內容",ans); myDescription.value=JSON.stringify(ans); //這里傳輸Description給呼叫方 , 手動復制 tip("3.將 我的Description 和 Candidate復制到 呼叫方對應的 對方的Description 和 Candidate ,呼叫方點擊確認"); pc.setLocalDescription(ans); }); pc.addIceCandidate(JSON.parse(anCandidate.value));};//請求呼叫方確認呼叫方的地址anBtn.onclick=function(){ pc.setRemoteDescription(new RTCSessionDescription(JSON.parse(anDescription.value))); pc.addIceCandidate(JSON.parse(anCandidate.value));};//關閉hangBtn.onclick=function(){ channel.close(); pc.close();}
上一篇:nodejs開發框架

下一篇:JQuery常用基礎

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲免费一在线| 青青久久aⅴ北条麻妃| 国产精品久久二区| 国产日韩欧美黄色| 黄色一区二区在线| 亚洲综合日韩中文字幕v在线| 色狠狠av一区二区三区香蕉蜜桃| 日韩免费看的电影电视剧大全| 亚洲精品国产品国语在线| 欧美激情综合色综合啪啪五月| 国产第一区电影| 国产ts一区二区| 51精品国产黑色丝袜高跟鞋| 欧美最猛黑人xxxx黑人猛叫黄| 日韩少妇与小伙激情| 久久午夜a级毛片| 国产97免费视| 日韩电影中文字幕在线观看| 国产精品视频网| 欧美另类极品videosbest最新版本| 国产美女久久久| 久久精品色欧美aⅴ一区二区| 亚洲系列中文字幕| 国产日韩精品在线播放| 欧美视频中文字幕在线| 久久精品国产综合| 国产中文字幕91| 97热在线精品视频在线观看| 日韩电影免费在线观看中文字幕| 欧美在线亚洲一区| 国产久一一精品| 俺去亚洲欧洲欧美日韩| 国产主播在线一区| 日韩a**中文字幕| 欧美成年人视频网站欧美| 色哟哟网站入口亚洲精品| 国产日韩精品综合网站| 亚洲精品福利在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 欧美成人免费视频| 社区色欧美激情 | 国产不卡精品视男人的天堂| 国产日本欧美视频| 亚洲国产中文字幕在线观看| 亚洲日本欧美中文幕| 欧美电影免费在线观看| 日韩欧美成人免费视频| 亚洲视频日韩精品| 国产精品久久久久久亚洲调教| 国产精品免费看久久久香蕉| 岛国视频午夜一区免费在线观看| 3344国产精品免费看| 成人精品一区二区三区电影黑人| 久久久久久久色| 欧美激情精品久久久久久| 色综合老司机第九色激情| 97国产成人精品视频| 成人深夜直播免费观看| 91沈先生在线观看| 日韩高清电影免费观看完整版| 美女少妇精品视频| 成人黄色午夜影院| 韩国欧美亚洲国产| 日韩av高清不卡| 亚洲激情视频网站| 成人国产精品日本在线| 久久伊人免费视频| 九九热这里只有在线精品视| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲国产成人精品女人久久久| 国产精品综合网站| 一区二区在线免费视频| 亚洲国产精品电影在线观看| 久久久精品亚洲| 国产精品av电影| 精品国产一区二区三区在线观看| 精品亚洲国产成av人片传媒| 国产精品露脸av在线| 日韩欧美高清视频| 久久久久久久激情视频| 5566成人精品视频免费| 激情久久av一区av二区av三区| 国产精品久久久久久久久免费看| 欧美丝袜第一区| 日韩69视频在线观看| 欧美国产极速在线| 久久久国产精品免费| 亚洲欧洲国产伦综合| 亚洲午夜av久久乱码| 久久伊人精品天天| 久久精品国产精品| 日韩电影免费在线观看| 亚洲在线观看视频| 日韩电影免费观看在线观看| 日韩精品视频在线观看免费| 精品久久久久久久大神国产| 国产91精品黑色丝袜高跟鞋| 亚洲精品www久久久| 久久免费观看视频| 亚洲精品久久久久| 亚洲毛片一区二区| 97在线日本国产| 久久亚洲精品毛片| 久久久久久久久电影| 日韩av在线电影网| 亚洲欧美国产日韩天堂区| 51精品国产黑色丝袜高跟鞋| 日韩大陆欧美高清视频区| 精品欧美国产一区二区三区| 精品小视频在线| 亚洲香蕉成视频在线观看| 欧美黑人巨大精品一区二区| 91国自产精品中文字幕亚洲| 久久91亚洲精品中文字幕奶水| 日韩欧美主播在线| 亚洲国产中文字幕在线观看| 国产精品久久77777| 成人h猎奇视频网站| 国产日韩精品在线| 亚洲成人久久久| 成人羞羞国产免费| 国产亚洲视频在线| 久久精品成人一区二区三区| 国产999精品| 91视频免费网站| 欧美午夜久久久| 成人精品一区二区三区| 欧美一级视频一区二区| 亚洲欧美国产制服动漫| 2018日韩中文字幕| 少妇av一区二区三区| 国产精品观看在线亚洲人成网| 国产精品久久久久久久美男| 久久天天躁狠狠躁夜夜躁2014| 日韩精品欧美国产精品忘忧草| 国产精品av免费在线观看| 成人网在线免费看| 久久久精品日本| 欧美日韩国产综合新一区| 国产日韩在线视频| 久久久久久久久久国产精品| 国产精品网红直播| 成人激情视频免费在线| 亚洲欧美中文字幕在线一区| 欧美性猛交xxx| 成人欧美一区二区三区在线| 美日韩丰满少妇在线观看| 亚洲精品有码在线| 精品国产网站地址| 国产综合在线观看视频| 国产精品999| 欧美大片大片在线播放| 欧美日韩激情美女| 久久久亚洲影院你懂的| 国产午夜精品一区理论片飘花| 国产成+人+综合+亚洲欧洲| 91九色国产社区在线观看| 亚洲国产欧美日韩精品| 国产精品最新在线观看| 久久久久久午夜| 97在线视频免费看| 精品福利在线观看| 亚洲r级在线观看| 亚洲黄在线观看|