RTCDataChannel: phương thức send()
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.
Phương thức send() của
Giao diện RTCDataChannel gửi dữ liệu qua kênh dữ liệu tới
ngang hàng từ xa.
Việc này có thể được thực hiện bất kỳ lúc nào ngoại trừ trong quá trình ban đầu của
tạo ra kênh vận chuyển cơ bản. Dữ liệu được gửi trước khi kết nối sẽ được lưu vào bộ đệm nếu
có thể xảy ra (hoặc xảy ra lỗi nếu không thể thực hiện được) và cũng được lưu vào bộ đệm nếu được gửi trong khi
kết nối đang đóng hoặc đóng.
[!LƯU Ý] Các trình duyệt khác nhau có những giới hạn khác nhau về kích thước của tin nhắn mà bạn có thể gửi. Các thông số kỹ thuật tồn tại để xác định cách tự động phân đoạn các tin nhắn lớn, nhưng không phải tất cả các trình duyệt đều triển khai chúng và những trình duyệt có nhiều tính năng bổ sung khác nhau hạn chế. Điều này sẽ trở nên ít phức tạp hơn theo thời gian, nhưng bây giờ, nếu bạn có câu hỏi, xem Hiểu giới hạn kích thước tin nhắn.
Cú pháp
send(data)
Thông số
data-
Dữ liệu cần truyền qua kết nối. Đây có thể là một chuỗi,
đối tượng
Blob,ArrayBuffer,TypedArrayhoặcDataView.
Giá trị trả về
Không có (undefined).
Ngoại lệ
InvalidStateErrorDOMException-
Bị ném khi kênh dữ liệu chưa thiết lập xong kết nối của chính nó (tức là
readyStatelàconnecting). Kênh dữ liệu phải thiết lập kết nối riêng vì nó sử dụng kênh truyền tải tách biệt với kênh nội dung đa phương tiện. Lỗi này xảy ra khi không gửi hoặc lưu vào bộ nhớ đệmdata. OperationErrorDOMException-
Được ném khi
datađược chỉ định cần được đệm và không còn chỗ cho nó trong bộ đệm. TypeError-
Bị ném nếu
datađược chỉ định quá lớn để thiết bị ngang hàng khác có thể nhận được. Kể từ khi có nhiều kỹ thuật để chia dữ liệu lớn thành các phần nhỏ hơn để chuyển, có thể gặp phải các tình huống trong đó thiết bị ngang hàng khác không ủng hộ những cái tương tự. Ví dụ: nếu một thiết bị ngang hàng là trình duyệt hiện đại hỗ trợ sử dụng cờEOR(Kết thúc bản ghi) để cho biết khi nào một tin nhắn đã nhận đượcphần cuối cùng của một đối tượng gồm nhiều phần được gửi bằng
send(). Để biết thêm thông tin về giới hạn kích thước tin nhắn, xem Hiểu giới hạn kích thước tin nhắn.
Ví dụ
Trong ví dụ này, một quy trình có tên sendMessage() được tạo; nó chấp nhận một
đối tượng làm đầu vào và gửi đến thiết bị ngang hàng ở xa, qua RTCDataChannel,
Chuỗi JSON có đối tượng được chỉ định và dấu thời gian.
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("BackChannel");
function sendMessage(msg) {
const obj = {
message: msg,
timestamp: new Date(),
};
dc.send(JSON.stringify(obj));
}
Thông số kỹ thuật
| Specification |
|---|
| WebRTC: Real-Time Communication in Browsers> # dom-rtcdatachannel-send> |