webrtc翻譯

這篇翻譯不完整嚎研。請幫忙從英語翻譯這篇文章

這是一個實驗中的功能

此功能某些瀏覽器尚在開發(fā)中,請參考瀏覽器兼容性表格以得到在不同瀏覽器中適合使用的前綴胖烛。由于該功能對應(yīng)的標(biāo)準(zhǔn)文檔可能被重新修訂,所以在未來版本的瀏覽器中該功能的語法和行為可能隨之改變诅迷。

RTCPeerConnection接口代表一個由本地計算機到遠端的WebRTC連接佩番。該接口提供了創(chuàng)建,保持罢杉,監(jiān)控趟畏,關(guān)閉連接的方法的實現(xiàn)。

注意:?RTCPeerConnection 和?RTCSessionDescription在不同的瀏覽器中有不同的實現(xiàn)方式滩租。(navigator.getUserMedia()方法也是如此)如果有必要赋秀,則需要考慮在不同瀏覽器的實現(xiàn)利朵。例如:

var PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;var SessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription || window.webkitRTCSessionDescription;var GET_USER_MEDIA = navigator.getUserMedia ? "getUserMedia" :? ? ? ? ? ? ? ? ? ? navigator.mozGetUserMedia ? "mozGetUserMedia" :? ? ? ? ? ? ? ? ? ? navigator.webkitGetUserMedia ? "webkitGetUserMedia" : "getUserMedia";var v = document.createElement("video");var SRC_OBJECT = 'srcObject' in v ? "srcObject" :? ? ? ? ? ? ? ? 'mozSrcObject' in v ? "mozSrcObject" :? ? ? ? ? ? ? ? 'webkitSrcObject' in v ? "webkitSrcObject" : "srcObject";

這將提高您的這將提高您的網(wǎng)站或網(wǎng)絡(luò)應(yīng)用的兼容性。Adapter.js提供的代碼解決了瀏覽器兼容性的問題

由于RTCPeerConnection實現(xiàn)了EventTarget?接口沃琅,故其可以接收處理事件哗咆。

構(gòu)造函數(shù)

RTCPeerConnection.RTCPeerConnection()

構(gòu)造函數(shù);創(chuàng)建一個新的RTCPeerConnection對象。

屬性

該接口的屬性繼承了其父接口,?EventTarget.

RTCPeerConnection.canTrickleIceCandidates?只讀

如果遠端支持UDP打洞或支持通過中繼服務(wù)器連接益眉,則該屬性值為true晌柬。否則,為false郭脂。該屬性的值依賴于遠端設(shè)置且僅在本地的?RTCPeerConnection.setRemoteDescription()方法被調(diào)用時有效年碘,如果該方法沒被調(diào)用,則其值為null.

RTCPeerConnection.connectionState?只讀

只讀connectionState屬性通過返回由枚舉RTCPeerConnectionState指定的字符串值之一來指示對等連接的當(dāng)前狀態(tài)展鸡。

RTCPeerConnection.currentLocalDescription?只讀

只讀屬性RTCPeerConnection.currentLocalDescription返回一個描述連接本地端的RTCSessionDescription對象屿衅,因為自上次RTCPeerConnection完成協(xié)商并連接到遠程對等體之后,它最近成功協(xié)商莹弊。 還包括可能已經(jīng)由ICE代理生成的任何ICE候選者的列表涤久,因為首先被描述的描述所表示的要約或答案。

RTCPeerConnection.currentRemoteDescription?只讀

只讀屬性RTCPeerConnection.currentRemoteDescription返回一個RTCSessionDescription對象忍弛,描述連接的遠程端响迂,因為最近一次RTCPeerConnection完成協(xié)商并連接到遠程對等體后最近成功協(xié)商。 還包括可能已經(jīng)由ICE代理生成的任何ICE候選者的列表细疚,因為首先被描述的描述所表示的要約或答案蔗彤。

RTCPeerConnection.defaultIceServers?只讀

只讀屬性RTCPeerConnection.defaultIceServers根據(jù)RTCIceServer字典返回一個對象數(shù)組,該字典指示如果在RTCConfiguration中沒有提供給RTCPeerConnection的默認(rèn)情況下疯兼,瀏覽器將使用ICE服務(wù)器然遏。 然而,瀏覽器根本不需要提供任何默認(rèn)的ICE服務(wù)器吧彪。

RTCPeerConnection.iceConnectionState?只讀

只讀屬性RTCPeerConnection.iceConnectionState返回與RTCPeerConnection關(guān)聯(lián)的ICE代理的狀態(tài)類型為RTCIceConnectionState的枚舉待侵。

RTCPeerConnection.iceGatheringState?只讀

只讀屬性,返回一個RTCIceGatheringState類型的結(jié)構(gòu)體姨裸,它描述了連接的ICE收集狀態(tài)

RTCPeerConnection.idpLoginUrl?只讀

blah

RTCPeerConnection.localDescription?只讀

只讀屬性诫给,返回一個?RTCSessionDescription?,它描述了這條連接的本地端的會話控制(用戶會話所需的屬性以及配置信息)啦扬。如果本地的會話控制還沒有被設(shè)置中狂,它的值就會是null。

RTCPeerConnection.peerIdentity?只讀

只讀屬性扑毡,返回一個RTCIdentityAssertion,它由一組信息構(gòu)成胃榕,包括一個域名(idp)以及一個名稱(name),它們代表了這條連接的遠端機器的身份識別信息。如果遠端機器還沒有被設(shè)置以及校驗勋又,這個屬性會返回一個null值苦掘。一旦被設(shè)置,它不能被一般方法改變楔壤。

RTCPeerConnection.pendingLocalDescription?只讀

blah

RTCPeerConnection.pendingRemoteDescription?只讀

blah

RTCPeerConnection.remoteDescription?只讀

blah

RTCPeerConnection.sctp?只讀

blah

RTCPeerConnection.signalingState?只讀

返回一個RTC通信狀態(tài)的結(jié)構(gòu)體鹤啡,這個結(jié)構(gòu)體描述了本地連接的通信狀態(tài)。這個 狀態(tài)描述了一個定義連接配置的SDP offer蹲嚣。它包含了下列信息递瑰,與MediaStream類型本地相關(guān)的對象的描述,媒體流編碼方式或RTP和 ?RTCP協(xié)議的選項?隙畜,以及被ICE服務(wù)器收集到的candidates(連接候選者)抖部。當(dāng)RTCPeerConnection.signalingState的值改變時,對象上的signalingstatechange事件會被觸發(fā)议惰。

基本用法

一個基本的RTCPeerConnection使用需要協(xié)調(diào)本地機器以及遠端機器的連接慎颗,它可以通過在兩臺機器間生成Session Description的數(shù)據(jù)交換協(xié)議來實現(xiàn)。呼叫方發(fā)送一個offer(請求)言询,被呼叫方發(fā)出一個answer(應(yīng)答)來回答請求俯萎。雙方-呼叫方以及被呼叫方,最開始的時候都要建立他們各自的RTCPeerConnection對象运杭。

var pc = new RTCPeerConnection();pc.onaddstream = function(obj) {? var vid = document.createElement("video");? document.appendChild(vid);? vid.srcObject = obj.stream;}// Helper functionsfunction endCall() {? var videos = document.getElementsByTagName("video");? for (var i = 0; i < videos.length; i++) {? ? videos[i].pause();? }? pc.close();}function error(err) { endCall(); }

呼叫初始化

如果你是呼叫方夫啊,你需要初始化一個連接

// Get a list of friends from a server// User selects a friend to start a peer connection withnavigator.getUserMedia({video: true}, function(stream) {? pc.onaddstream({stream: stream});? // Adding a local stream won't trigger the onaddstream callback? pc.addStream(stream);? pc.createOffer(function(offer) {? ? pc.setLocalDescription(new RTCSessionDescription(offer), function() {? ? ? // send the offer to a server to be forwarded to the friend you're calling.? ? }, error);? }, error);}

呼叫回答

在另一端,你的朋友會從服務(wù)器收到offer信息县习。

var offer = getOfferFromFriend();navigator.getUserMedia({video: true}, function(stream) {? pc.onaddstream({stream: stream});? pc.addStream(stream);? pc.setRemoteDescription(new RTCSessionDescription(offer), function() {? ? pc.createAnswer(function(answer) {? ? ? pc.setLocalDescription(new RTCSessionDescription(answer), function() {? ? ? ? // send the answer to a server to be forwarded back to the caller (you)? ? ? }, error);? ? }, error);? }, error);}

處理應(yīng)答

同時在呼叫發(fā)起方,你會收到這個應(yīng)答(前面被呼叫方發(fā)出的answer)谆趾,你需要將它設(shè)置為你的遠端連接躁愿。

// pc was set up earlier when we made the original offervar offer = getResponseFromFriend();pc.setRemoteDescription(new RTCSessionDescription(offer), function() { }, error);

屬性

這個接口從它的父元素中繼承屬性,?EventTarget.

RTCPeerConnection.iceConnectionState?只讀

返回一個RTCIceConnectionState類型的結(jié)構(gòu)體,這個結(jié)構(gòu)體描述了連接的ICE連接狀態(tài)沪蓬。當(dāng)這個狀態(tài)的值改變時彤钟,這個對象會觸發(fā)一個iceconnectionstatechange?事件。狀態(tài)可能存在的值如下:

"new": ICE服務(wù)器正在收集地址或正在等待遠端的candidates(這兩種情況可能同時存在)跷叉。

"checking": ICE服務(wù)器找到了遠端的candidates(連接候選者),這些candidates至少有一個逸雹,同時ICE服務(wù)器在檢測這些candidates,盡管它可能還沒有找到連接云挟。此刻梆砸,ICE服務(wù)器可能仍在收集candidates(連接候選者)。

"connected": ICE服務(wù)器已經(jīng)找到了一條可用的適合所有組件的連接园欣,但它仍然在測試更多的遠端candidate以提供更好的連接帖世。同時,ICE服務(wù)器可能仍在收集candidates沸枯。

"completed": ICE服務(wù)器已經(jīng)找到了一條可用的連接日矫,并不再測試遠端candidates赂弓。

"failed": ICE服務(wù)器已經(jīng)檢測了所有的遠端candidates,但并沒有找到可用的哪轿。對一些組件適用的連接可能已經(jīng)被找到盈魁。

"disconnected": 至少一個組件的活躍度檢查失敗了,這可能是由糟糕的網(wǎng)絡(luò)環(huán)境造成的一個短期狀態(tài)窃诉,它可以被它自身所修復(fù)杨耙。

"closed": ICE服務(wù)器已經(jīng)關(guān)閉,并不再響應(yīng)請求褐奴。

RTCPeerConnection.iceGatheringState?只讀

返回一個iceGatheringState類型的結(jié)構(gòu)體按脚,它描述了這條連接的ICE收集狀態(tài)。該狀態(tài)可能取以下的值:

"new": 對象剛剛被創(chuàng)建,還沒有網(wǎng)絡(luò)化敦冬。

"gathering": ICE引擎正在為連接收集candidates(連接候選者)辅搬。

"complete": 引擎已經(jīng)完成了candidates收集。但像添加一個新的接口或者一個新的turn服務(wù)器這些事件會導(dǎo)致狀態(tài)回到"gathering"脖旱。

RTCPeerConnection.localDescription?只讀

返回一個?RTCSessionDescription?堪遂,它描述了這條連接的本地端的會話控制(用戶會話所需的屬性以及配置信息)。如果本地的會話控制還沒有被設(shè)置萌庆,它的值就會是null溶褪。

RTCPeerConnection.peerIdentity?只讀

返回一個RTCIdentityAssertion,它由一組信息構(gòu)成,包括一個域名(idp)以及一個名稱(name)践险,它們代表了這條連接的遠端機器的身份識別信息猿妈。如果遠端機器還沒有被設(shè)置以及校驗,這個屬性會返回一個null值巍虫。一旦被設(shè)置彭则,它不能被一般方法改變。

RTCPeerConnection.remoteDescription?只讀

返回一個?RTCSessionDescription?它描述了這條連接的遠端機器的會話控制占遥,如果遠端機器還未被設(shè)置俯抖,它的值會是null。

RTCPeerConnection.signalingState?只讀

返回一個RTC通信狀態(tài)的結(jié)構(gòu)體瓦胎,這個結(jié)構(gòu)體描述了本地連接的通信狀態(tài)芬萍。這個 狀態(tài)描述了一個定義連接配置的SDP offer。它包含了下列信息搔啊,與MediaStream類型本地相關(guān)的對象的描述柬祠,媒體流編碼方式或RTP和 ?RTCP協(xié)議的選項?,以及被ICE服務(wù)器收集到的candidates(連接候選者)负芋。當(dāng)RTCPeerConnection.signalingState的值改變時瓶盛,對象上的signalingstatechange事件會被觸發(fā)。?它可能取下列的值:

"stable": 沒有SDP offer/answer正在被交換,連接仍然處于初始化狀態(tài)惩猫。

"have-local-offer": 這條連接的本地端機器已經(jīng)本地應(yīng)用了一個SDP offer芝硬。

"have-remote-offer": 這條連接的遠端機器已經(jīng)本地應(yīng)用了一個SDP offer。

"have-local-pranswer": 一個來自遠端的SDP offer已經(jīng)被應(yīng)用轧房,同時一個SDP pranswer在本地被應(yīng)用拌阴。

"have-remote-pranswer":一個本地的SDP offer被應(yīng)用,同時一個SDP pranswer在遠端被應(yīng)用奶镶。

"closed": 連接被關(guān)閉迟赃。

事件處理器

RTCPeerConnection.onaddstream

是收到addstream?事件時調(diào)用的事件處理器。?Such an event is 當(dāng)MediaStream?被遠端機器添加到這條連接時厂镇,該事件會被觸發(fā)纤壁。?當(dāng)調(diào)用RTCPeerConnection.setRemoteDescription()方法時,這個事件就會被立即觸發(fā)捺信,它不會等待SDP協(xié)商的結(jié)果酌媒。

RTCPeerConnection.ondatachannel

是收到datachannel?事件時調(diào)用的事件處理器。?當(dāng)一個RTCDataChannel?被添加到連接時迄靠,這個事件被觸發(fā)秒咨。

RTCPeerConnection.onicecandidate

是收到?icecandidate?事件時調(diào)用的事件處理器.。當(dāng)一個RTCICECandidate?對象被添加時掌挚,這個事件被觸發(fā)雨席。

RTCPeerConnection.oniceconnectionstatechange

是收到iceconnectionstatechange事件時調(diào)用的事件處理器 。 當(dāng)iceConnectionState改變時吠式,這個事件被觸發(fā)陡厘。

RTCPeerConnection.onidentityresult

是收到?identityresult事件時調(diào)用的事件處理器。?當(dāng)通過getIdentityAssertion()生成身份斷言, 或在生成一個answer或一個offer的過程中特占,這個事件被觸發(fā)糙置。

RTCPeerConnection.onidpassertionerror

是收到?idpassertionerror?事件時調(diào)用的事件處理器。當(dāng)生成一個身份斷言時摩钙,如果關(guān)聯(lián)的身份提供者(idP)遇到一個錯誤罢低,這個事件就會被觸發(fā)查辩。

RTCPeerConnection.onidpvalidationerror

是收到?idpvalidationerror?事件時調(diào)用的事件處理器胖笛。當(dāng)檢查 一個身份斷言時,如果關(guān)聯(lián)的身份提供者(idP)遇到一個錯誤宜岛,這個事件就會被觸發(fā)长踊。

RTCPeerConnection.onnegotiationneeded

是收到negotiationneeded?事件時調(diào)用的事件處理器,?瀏覽器發(fā)送該事件以告知在將來某一時刻需要協(xié)商萍倡。

RTCPeerConnection.onpeeridentity

是收到peeridentity?事件時調(diào)用的事件處理器, 當(dāng)一條連接的peer identify被設(shè)置以及校驗后身弊,該事件被觸發(fā)

RTCPeerConnection.onremovestream

是收到removestream?事件時調(diào)用的事件處理器,當(dāng)一條MediaStream?從連接上移除時,該事件被觸發(fā)阱佛。

RTCPeerConnection.onsignalingstatechange

是收到signalingstatechange?事件時調(diào)用的事件處理器, 當(dāng)signalingState的值發(fā)生改變時帖汞,該事件被觸發(fā)。

方法

RTCPeerConnection()

RTCPeerConnection的初始化函數(shù)凑术,通過 new RTCPeerConnection()初始化一個RTCPeerConnection實例翩蘸。

RTCPeerConnection.createOffer()

生成一個offer,它是一個帶有特定的配置信息尋找遠端匹配機器(peer)的請求淮逊。這個方法的前兩個參數(shù)分別是方法調(diào)用成功以及失敗的回調(diào)函數(shù)催首,可選的第三個參數(shù)是用戶對視頻流以及音頻流的定制選項(一個對象)。

RTCPeerConnection.createAnswer()

在協(xié)調(diào)一條連接中的兩端offer/answers時泄鹏,根據(jù)從遠端發(fā)來的offer生成一個answer郎任。這個方法的前兩個參數(shù)分別是方法調(diào)用成功以及失敗時的回調(diào)函數(shù),可選的第三個參數(shù)是生成的answer的可供選項备籽。

RTCPeerConnection.setLocalDescription()

改變與連接相關(guān)的本地描述舶治。這個描述定義了連接的屬性,例如:連接的編碼方式胶台。連接會受到它的改變的影響歼疮,而且連接必須能同時支持新的以及舊的描述。這個方法可以接收三個參數(shù)诈唬,一個RTCSessionDescription?對象包含設(shè)置信息韩脏,還有兩個回調(diào)函數(shù),它們分別是方法調(diào)用成功以及失敗的回調(diào)函數(shù)铸磅。

RTCPeerConnection.setRemoteDescription()

改變與連接相關(guān)的遠端描述赡矢。這個描述定義了連接的屬性,例如:連接的編碼方式阅仔。連接會受到它的改變的影響吹散,而且連接必須能同時支持新的以及舊的描述。這個方法可以接收三個參數(shù)八酒,一個RTCSessionDescription?對象包含設(shè)置信息空民,還有兩個回調(diào)函數(shù),它們分別是方法調(diào)用成功以及失敗的回調(diào)函數(shù)羞迷。

RTCPeerConnection.updateIce()

更新ICE服務(wù)器時調(diào)用的方法界轩。

RTCPeerConnection.addIceCandidate()

添加iceCandidate時調(diào)用的方法。

RTCPeerConnection.getConfiguration()

獲取配置信息時調(diào)用的方法衔瓮。

RTCPeerConnection.getLocalStreams()

返回連接的本地媒體流數(shù)組浊猾。這個數(shù)組可能是空數(shù)組。

RTCPeerConnection.getRemoteStreams()

返回連接的遠端媒體流數(shù)組热鞍。這個數(shù)組可能是空數(shù)組葫慎。

RTCPeerConnection.getStreamById()

返回連接中與所給id匹配的媒體流?MediaStream衔彻,如果沒有匹配項,返回null偷办。

RTCPeerConnection.addStream()

添加一個媒體流?MediaStream作為本地音頻或視頻源艰额。如果本地端與遠端協(xié)調(diào)已經(jīng)發(fā)生了,那么需要一個新的媒體流椒涯,這樣遠端才可以使用它悴晰。

RTCPeerConnection.removeStream()

將一個作為本地音頻或視頻源的媒體流?MediaStream移除。如果本地端與遠端協(xié)調(diào)已經(jīng)發(fā)生了逐工,那么需要一個新的媒體流铡溪,這樣遠端才可以停止使用它。

RTCPeerConnection.close()

關(guān)閉一個RTCPeerConnection實例所調(diào)用的方法泪喊。

RTCPeerConnection.createDataChannel()

在一條連接上建立一個新的RTCDataChannel(用于數(shù)據(jù)發(fā)送)棕硫。這個方法把一個數(shù)據(jù)對象作為參數(shù),數(shù)據(jù)對象中包含必要的配置信息袒啼。

RTCPeerConnection.createDTMFSender()

創(chuàng)建一個新的與特殊的MediaStreamTrack相關(guān)的RTCDTMFSender哈扮,可以在連接上發(fā)送DTMF手機信號。

RTCPeerConnection.getStats()

生成一個新的RTCStatsReport蚓再,它包含連接相關(guān)的統(tǒng)計信息滑肉。

RTCPeerConnection.setIdentityProvider()

根據(jù)所給的三個參數(shù)設(shè)置身份提供者(IdP),這三個參數(shù)是它的名稱摘仅,通信所使用的協(xié)議(可選)靶庙,以及一個可選的用戶名。只有當(dāng)一個斷言被需要時娃属,這個IdP才會被使用六荒。

RTCPeerConnection.getIdentityAssertion()

初始化身份斷言的收集,只有當(dāng)signalingState的值不為"closed"時矾端,它才有效掏击。它自動完成,在需求發(fā)生前調(diào)用它是最好的選擇秩铆。

構(gòu)造函數(shù)

new RTCPeerConnection(RTCConfigurationconfiguration, optionalMediaConstraintsconstraints);

注意:PeerConnection需要傳遞一個RTCConfiguration對象作為參數(shù)砚亭,如果你沒有傳遞參數(shù)的話,火狐瀏覽器會自動提供一個參數(shù)殴玛。

方法

createOffer

void createOffer(RTCSessionDescriptionCallback?successCallback,RTCPeerConnectionErrorCallback?failureCallback, optional?MediaConstraintsconstraints);

createOffer方法會生成描述信息的一個blob對象捅膘,它會幫助連接到本地機器。當(dāng)你已經(jīng)找到一個遠端的PeerConnection并且打算設(shè)置建立本地的PeerConnection時族阅,你可以使用該方法篓跛。

舉例

var pc = new PeerConnection();pc.addStream(video);pc.createOffer(function(desc){? pc.setLocalDescription(desc, function() {? ? // send the offer to a server that can negotiate with a remote client? });}

參數(shù)

successCallback(方法調(diào)用成功時的回調(diào)函數(shù))

一個?RTCSessionDescriptionCallback?它會收到一個RTCSessionDescription?對象作為參數(shù)膝捞。

errorCallback(方法調(diào)用失敗時的回調(diào)函數(shù))

一個?RTCPeerConnectionErrorCallback?它會收到一個DOMError?對象作為參數(shù)坦刀。

[optional] constraints(可選的約束條件)

一個可選的MediaConstraints?對象愧沟。

createAnswer

void createAnswer(RTCSessionDescriptionCallback?successCallback,RTCPeerConnectionErrorCallback?failureCallback, optional?MediaConstraintsconstraints)")

對從遠方收到的offer進行回答。

舉例

var pc = new PeerConnection();pc.setRemoteDescription(new RTCSessionDescription(offer), function() {? pc.createAnswer(function(answer) {? ? pc.setLocalDescription(answer, function() {? ? ? // send the answer to the remote connection? ? })? })});

參數(shù)

successCallback(方法調(diào)用成功時的回調(diào)函數(shù))

一個?RTCSessionDescriptionCallback?它會收到一個RTCSessionDescription?對象作為參數(shù)鲤遥。

errorCallback(方法調(diào)用失敗時的回調(diào)函數(shù))

一個?RTCPeerConnectionErrorCallback?它會收到一個DOMError?對象作為參數(shù)沐寺。

[optional] constraints(可選的約束條件)

一個可選的MediaConstraints?對象。

updateIce()

updateIce(optional?RTCConfiguration?configuration, optional?MediaConstraintsconstraints)

該方法會更新ICE代理收集本地candidates以及連接云端candidates的進程盖奈。如果強制約束條件"IceTransports"存在混坞,那么它會控制ICE代理的工作方式。它可以用于限制接聽者對TURN candidates的使用钢坦,這樣可以避免在請求被應(yīng)答前泄露位置信息究孕。如果這個方法影響了已經(jīng)建立的連接,那么它可能導(dǎo)致ICE代理狀態(tài)的改變以及媒體狀態(tài)的改變爹凹。

舉例

addIceCandidate()

addIceCandidate (RTCIceCandidate?candidate,?Function?successCallback,?RTCPeerConnectionErrorCallback?failureCallback);

除了被添加到遠端描述之外厨诸,只要約束條件"IceTransports" 沒有被設(shè)置為null,連接檢測結(jié)果會被發(fā)送給新的candidates禾酱。如果這個方法影響了已經(jīng)建立的連接微酬,那么它可能導(dǎo)致ICE代理狀態(tài)的改變以及媒體狀態(tài)的改變。

舉例

pc.addIceCandidate(new RTCIceCandidate(candidate));

createDataChannel

RTCDataChannel?createDataChannel (DOMString?label, optionalRTCDataChannelInit?dataChannelDict);

通過peerconnection建立一條數(shù)據(jù)信道颤陶,用于發(fā)送非視頻音頻信息颗管。

例子

var pc = new PeerConnection();var channel = pc.createDataChannel("Mydata");channel.onopen = function(event) {channel.send('sending a message');}channel.onmessage = function(event) { console.log(event.data); }

引申閱讀

https://github.com/jesup/nightly-gupshup/blob/master/static/js/chat.js

http://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-simple

http://dev.w3.org/2011/webrtc/editor/webrtc.html

文檔標(biāo)簽和貢獻者

?標(biāo)簽:?

WebRTC


視頻通話

此頁面的貢獻者:?ztacesa,?yxxgoogle,?Move,?zhuyeqing5828,?Wunmest

最后編輯者:?ztacesa,?Aug 24, 2017, 8:34:52 AM

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市滓走,隨后出現(xiàn)的幾起案子垦江,更是在濱河造成了極大的恐慌,老刑警劉巖搅方,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疫粥,死亡現(xiàn)場離奇詭異,居然都是意外死亡腰懂,警方通過查閱死者的電腦和手機梗逮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绣溜,“玉大人慷彤,你說我怎么就攤上這事〔烙鳎” “怎么了底哗?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锚沸。 經(jīng)常有香客問我跋选,道長,這世上最難降的妖魔是什么哗蜈? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任前标,我火速辦了婚禮坠韩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炼列。我一直安慰自己只搁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布俭尖。 她就那樣靜靜地躺著氢惋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稽犁。 梳的紋絲不亂的頭發(fā)上焰望,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音已亥,去河邊找鬼柿估。 笑死,一個胖子當(dāng)著我的面吹牛陷猫,可吹牛的內(nèi)容都是我干的秫舌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼绣檬,長吁一口氣:“原來是場噩夢啊……” “哼足陨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娇未,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤墨缘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后零抬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镊讼,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年平夜,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝶棋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡忽妒,死狀恐怖玩裙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情段直,我是刑警寧澤吃溅,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站鸯檬,受9級特大地震影響决侈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喧务,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一赖歌、第九天 我趴在偏房一處隱蔽的房頂上張望枉圃。 院中可真熱鬧,春花似錦俏站、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赁酝,卻和暖如春犯祠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背酌呆。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工衡载, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隙袁。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓痰娱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親菩收。 傳聞我的和親對象是個殘疾皇子梨睁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355