WebSocketStream
Экспериментально: Это экспериментальная технология.
Перед использованием в рабочей среде тщательно ознакомьтесь со таблицей совместимости с браузерами.
Примечание: Эта функция доступна в Web Workers.
Интерфейс WebSocketStream API WebSockets — это основанный на обещаниях API для подключения к серверу WebSocket. Он использует потоки для отправки и получения данных по соединению, и, следовательно, может автоматически использовать преимущества обратной загрузки потока, регулируя скорость чтения или записи, чтобы избежать узких мест в приложении.
Конструктор
-
WebSocketStream()Экспериментально -
Создаёт новый экземпляр объекта
WebSocketStream.
Свойства экземпляра
-
urlТолько для чтения Экспериментально -
Возвращает URL сервера WebSocket, с которым был создан экземпляр
WebSocketStream. -
closedТолько для чтения Экспериментально -
Возвращает
Promise, который выполняется с объектом, как только соединение сокета закрывается. Объект содержит код закрытия и причину, отправленные сервером. -
openedТолько для чтения Экспериментально -
Возвращает
Promise, который выполняется с объектом, как только соединение сокета успешно открывается. Среди других функций, этот объект содержит экземплярReadableStreamиWritableStreamдля приёма и отправки данных по соединению.
Методы экземпляра
-
close()Экспериментально -
Закрывает соединение WebSocket.
Примеры
const output = document.querySelector("#output");
function writeToScreen(message) {
const pElem = document.createElement("p");
pElem.textContent = message;
output.appendChild(pElem);
}
if (!("WebSocketStream" in self)) {
writeToScreen("Your browser does not support 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();
}
См. Использование WebSocketStream для написания клиента для полного примера с полным объяснением.
Спецификации
В настоящее время не входит в состав спецификаций. См. https://github.com/whatwg/websockets/pull/48 для отслеживания процесса стандартизации.
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
WebSocketStream |
124 | 124 | Нет | 110 | Нет | 124 | Нет | 82 | Нет | 27.0 | 124 |
WebSocketStream |
124 | 124 | Нет | 110 | Нет | 124 | Нет | 82 | Нет | 27.0 | 124 |
close |
124 | 124 | Нет | 110 | Нет | 124 | Нет | 82 | Нет | 27.0 | 124 |
closed |
124 | 124 | Нет | 110 | Нет | 124 | Нет | 82 | Нет | 27.0 | 124 |
opened |
124 | 124 | Нет | 110 | Нет | 124 | Нет | 82 | Нет | 27.0 | 124 |
url |
124 | 124 | Нет | 110 | Нет | 124 | Нет | 82 | Нет | 27.0 | 124 |
См. также
- WebSocketStream: интеграция потоков с API WebSocket, developer.chrome.com (2020)
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebSocketStream