Spec-Zone.ru › Web APIs

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API