WebSocketStream
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Note: This feature is available in Web Workers.
Giao diện WebSocketStream của WebSockets API là một API dựa trên promise để kết nối với máy chủ WebSocket. Nó dùng streams để gửi và nhận dữ liệu trên kết nối, nên có thể tự động tận dụng cơ chế backpressure của stream, điều tiết tốc độ đọc hoặc ghi để tránh nghẽn trong ứng dụng.
Constructor
WebSocketStream()Experimental-
Tạo một thể hiện đối tượng
WebSocketStreammới.
Thuộc tính thể hiện
urlRead only Experimental-
Trả về URL của máy chủ WebSocket mà thể hiện
WebSocketStreamđược tạo với. closedRead only Experimental-
Trả về một
Promisesẽ được thực thi với một đối tượng khi kết nối socket đóng lại. Đối tượng này chứa mã đóng và lý do do máy chủ gửi. openedRead only Experimental-
Trả về một
Promisesẽ được thực thi với một đối tượng khi kết nối socket mở thành công. Trong số các tính năng khác, đối tượng này chứa một thể hiệnReadableStreamvàWritableStreamđể nhận và gửi dữ liệu trên kết nối.
Phương thức thể hiện
close()Experimental-
Đóng kết nối WebSocket.
Ví dụ
const output = document.querySelector("#output");
function writeToScreen(message) {
const pElem = document.createElement("p");
pElem.textContent = message;
output.appendChild(pElem);
}
if (!("WebSocketStream" in self)) {
writeToScreen("Trình duyệt của bạn không hỗ trợ WebSocketStream");
} else {
const wsURL = "ws://127.0.0.1/";
const wss = new WebSocketStream(wsURL);
console.log(wss.url);
async function start() {
const { readable, writable, extensions, protocol } = await wss.opened;
writeToScreen("CONNECTED");
closeBtn.disabled = false;
const reader = readable.getReader();
const writer = writable.getWriter();
writer.write("ping");
writeToScreen("SENT: ping");
while (true) {
const { value, done } = await reader.read();
writeToScreen(`RECEIVED: ${value}`);
if (done) {
break;
}
setTimeout(() => {
writer.write("ping");
writeToScreen("SENT: ping");
}, 5000);
}
}
start();
}
Xem Using WebSocketStream to write a client để xem ví dụ đầy đủ kèm giải thích chi tiết.
Thông số kỹ thuật
Hiện chưa thuộc bất kỳ đặc tả nào. Xem https://github.com/whatwg/websockets/pull/48 để theo dõi tiến trình chuẩn hóa.
Tương thích trình duyệt
Xem thêm
- WebSocketStream: tích hợp streams với WebSocket API, developer.chrome.com (2020)