WebSocketStream
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Das WebSocketStream
-Interface der WebSockets-API ist eine versprechenbasierte API zum Verbinden mit einem WebSocket-Server. Es verwendet Streams, um Daten über die Verbindung zu senden und zu empfangen, und kann daher automatisch von der Stream-Gegenstromkontrolle profitieren, die die Geschwindigkeit des Lesens oder Schreibens reguliert, um Engpässe in der Anwendung zu vermeiden.
Konstruktor
WebSocketStream()
Experimentell-
Erstellt eine neue Instanz des
WebSocketStream
-Objekts.
Instanz-Eigenschaften
url
Nur lesbar Experimentell-
Gibt die URL des WebSocket-Servers zurück, mit dem die
WebSocketStream
-Instanz erstellt wurde. closed
Nur lesbar Experimentell-
Gibt ein
Promise
zurück, das mit einem Objekt erfüllt wird, sobald die Socket-Verbindung geschlossen ist. Das Objekt enthält den Schließscode und den Grund, wie er vom Server gesendet wurde. opened
Nur lesbar Experimentell-
Gibt ein
Promise
zurück, das mit einem Objekt erfüllt wird, sobald die Socket-Verbindung erfolgreich geöffnet wurde. Unter anderem enthält dieses Objekt eine Instanz vonReadableStream
undWritableStream
zum Empfangen und Senden von Daten über die Verbindung.
Instanz-Methoden
close()
Experimentell-
Schließt die WebSocket-Verbindung.
Beispiele
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();
}
Sehen Sie Using WebSocketStream to write a client für ein vollständiges Beispiel mit umfassender Erklärung.
Spezifikationen
Derzeit nicht Teil irgendeiner Spezifikation. Siehe https://github.com/whatwg/websockets/pull/48 für den Standardisierungsfortschritt.
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- WebSocketStream: integrating streams with the WebSocket API, developer.chrome.com (2020)