RTCDataChannel

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

* Some parts of this feature may have varying levels of support.

Giao diện RTCDataChannel đại diện cho một kênh mạng có thể được sử dụng để truyền dữ liệu tùy ý ngang hàng hai chiều. Mỗi kênh dữ liệu được liên kết với một RTCPeerConnection và mỗi kết nối ngang hàng có thể có tối đa theo lý thuyết là 65.534 kênh dữ liệu (giới hạn thực tế có thể khác nhau tùy theo trình duyệt).

Để tạo kênh dữ liệu và yêu cầu một thiết bị ngang hàng từ xa tham gia cùng bạn, hãy gọi phương thức createDataChannel() của RTCPeerConnection. Thiết bị ngang hàng được mời trao đổi dữ liệu sẽ nhận được sự kiện datachannel (có loại RTCDataChannelEvent) để cho nó biết kênh dữ liệu đã được thêm vào kết nối.

RTCDataChannel là một vật có thể chuyển nhượng.

EventTarget RTCDataChannel

Thuộc tính phiên bản

Cũng kế thừa các thuộc tính từ EventTarget.

binaryType

Một chuỗi xác định loại đối tượng nên được sử dụng để thể hiện dữ liệu nhị phân nhận được trên RTCDataChannel. Các giá trị giống như được phép trên thuộc tính WebSocket.binaryType: blob nếu đối tượng Blob đang được sử dụng, hoặc arraybuffer nếu đối tượng ArrayBuffer đang được sử dụng. Giá trị mặc định là arraybuffer.

bufferedAmount Read only

Trả về số byte dữ liệu hiện đang xếp hàng để được gửi qua kênh dữ liệu.

bufferedAmountLowThreshold

Chỉ định số byte dữ liệu gửi đi được lưu vào bộ đệm được coi là "thấp". Giá trị mặc định là 0.

id Read only

Trả về số ID (từ 0 đến 65.534) xác định duy nhất RTCDataChannel.

label Read only

Trả về một chuỗi chứa tên mô tả kênh dữ liệu. Những nhãn này không bắt buộc phải là duy nhất.

maxPacketLifeTime Read only

Trả về lượng thời gian, tính bằng mili giây, trình duyệt được phép thực hiện để cố gắng truyền tải tin nhắn, như được đặt khi kênh dữ liệu được tạo, hoặc null.

maxRetransmits Read only

Trả về số lần tối đa trình duyệt nên cố gắng truyền lại tin nhắn trước khi từ bỏ, như được đặt khi kênh dữ liệu được tạo, hoặc null, cho biết không có mức tối đa.

negotiated Read only

Biểu thị liệu kết nối của RTCDataChannel có được ứng dụng Web thương lượng hay không (true) hoặc bởi lớp WebRTC (false). Giá trị mặc định là false.

ordered Read only

Cho biết kênh dữ liệu có đảm bảo gửi tin nhắn theo thứ tự hay không; mặc định là true, cho biết kênh dữ liệu thực sự đã được sắp xếp.

priority Read only Experimental

Trả về một chuỗi biểu thị mức độ ưu tiên của kênh dữ liệu, như được đặt khi kênh dữ liệu được tạo hoặc do tác nhân người dùng chỉ định. Các giá trị có thể là "very-low", "low", "medium" hoặc "high".

protocol Read only

Trả về một chuỗi chứa tên của giao thức con đang sử dụng. Nếu không có giao thức nào được chỉ định khi kênh dữ liệu được tạo, thì giá trị của thuộc tính này là chuỗi trống ("").

readyState Read only

Trả về một chuỗi cho biết trạng thái kết nối dữ liệu cơ bản của kênh dữ liệu. Nó có thể có một trong các giá trị sau: connecting, open, closing hoặc closed.

Thuộc tính lỗi thời

reliable Read only Deprecated Non-standard

Cho biết kênh dữ liệu có đáng tin cậy hay không.

Các phương thức thực thể

Cũng kế thừa các phương thức từ EventTarget.- close()

  • : Đóng RTCDataChannel. Một trong hai ngang hàng được phép gọi phương thức này

    để bắt đầu đóng kênh.

  • send()
    • : Gửi dữ liệu qua kênh dữ liệu đến thiết bị ngang hàng từ xa.

Sự kiện

bufferedamountlow

Đã gửi khi số byte dữ liệu trong bộ đệm dữ liệu đi giảm xuống dưới giá trị được chỉ định bởi bufferedAmountLowThreshold.

close

Được gửi khi quá trình vận chuyển dữ liệu cơ bản đóng lại.

closing

Được gửi khi quá trình truyền dữ liệu cơ bản sắp bắt đầu đóng.

error

Được gửi khi xảy ra lỗi trên kênh dữ liệu.

message

Được gửi khi nhận được tin nhắn từ thiết bị ngang hàng ở xa. Nội dung tin nhắn có thể được tìm thấy

trong thuộc tính data của sự kiện.

open

Được gửi khi kênh dữ liệu được mở lần đầu tiên,

hoặc khi kết nối cơ bản của kênh dữ liệu hiện có mở lại.

Định dạng dữ liệu

Định dạng dữ liệu cơ bản được xác định bởi đặc tả IEEE Thủ tục trả lời/đề nghị SDP cho SCTP qua truyền tải DTLS (RFC 8841). Định dạng hiện tại chỉ định giao thức của nó là "UDP/DTLS/SCTP" (UDP mang DTLS mang SCTP) hoặc "TCP/DTLS/SCTP" (TCP mang DTLS mang SCTP). Các trình duyệt cũ hơn chỉ có thể chỉ định "DTLS/SCTP".

Ví dụ

js
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("my channel");

dc.onmessage = (event) => {
  console.log(`received: ${event.data}`);
};

dc.onopen = () => {
  console.log("datachannel open");

};

dc.onclose = () => {

  console.log("datachannel close");
};

Thông số kỹ thuật

Specification
WebRTC: Real-Time Communication in Browsers
# rtcdatachannel

Khả năng tương thích của trình duyệt

Xem thêm