RTCDataChannel: send() 方法
RTCDataChannel 介面的 send() 方法將資料透過資料通道傳送到遠端對等方。此操作可以在任何時候進行,除了在底層傳輸通道的初始建立過程中。在連線建立之前傳送的資料會被儘可能地緩衝(如果不可能則會發生錯誤),同時在連線關閉或已關閉期間傳送的資料也會被緩衝。
注意: 不同瀏覽器對您傳送的訊息大小限制不同。規範中定義瞭如何自動分片大訊息,但並非所有瀏覽器都實現了這些規範,即使實現了也可能存在各種額外的限制。隨著時間的推移,這種情況會變得更簡單,但目前,如果您有疑問,請參閱 理解訊息大小限制。
語法
js
send(data)
引數
data-
要在連線上傳輸的資料。它可以是字串、
Blob、ArrayBuffer、TypedArray或DataView物件。
返回值
無(undefined)。
異常
InvalidStateErrorDOMException-
當資料通道尚未完成建立自己的連線時(即,其
readyState為connecting)會丟擲此異常。資料通道必須建立自己的連線,因為它使用與媒體內容不同的傳輸通道。此錯誤會在不傳送或緩衝data的情況下發生。 OperationErrorDOMException-
當指定的資料需要被緩衝,但緩衝區中沒有足夠空間時會丟擲此異常。
TypeError-
如果指定的資料對於接收方而言過大,將丟擲此異常。由於存在多種將大資料拆分成小塊進行傳輸的技術,因此可能會遇到接收方不支援相同分片技術的情況。例如,如果一方是支援使用
EOR(記錄結束)標誌來指示已接收訊息是否為使用send()傳送的多部分物件的最後一部分的現代瀏覽器。有關訊息大小限制的更多資訊,請參閱 理解訊息大小限制。
示例
在此示例中,建立了一個名為 sendMessage() 的例程;它接受一個物件作為輸入,並透過 RTCDataChannel 將指定物件和時間戳的 JSON 字串傳送到遠端對等方。
js
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("BackChannel");
function sendMessage(msg) {
const obj = {
message: msg,
timestamp: new Date(),
};
dc.send(JSON.stringify(obj));
}
規範
| 規範 |
|---|
| WebRTC:瀏覽器中的即時通訊 # dom-rtcdatachannel-send |
瀏覽器相容性
載入中…