WebSocketStream
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Das WebSocketStream-Interface der WebSockets-API ist eine auf Promises basierende API zum Verbinden mit einem WebSocket-Server. Sie verwendet Streams, um Daten über die Verbindung zu senden und zu empfangen, und kann daher automatisch den Stream-Rückdruck nutzen, um die Lese- oder Schreibgeschwindigkeit zu regulieren und Engpässe in der Anwendung zu vermeiden.
Konstruktor
WebSocketStream()-
Erstellt eine neue
WebSocketStream-Objektinstanz.
Instanz-Eigenschaften
urlSchreibgeschützt-
Gibt die URL des WebSocket-Servers zurück, mit dem die
WebSocketStream-Instanz erstellt wurde. closedSchreibgeschützt-
Gibt ein
Promisezurück, das erfüllt wird, wenn die Socket-Verbindung geschlossen wird. Das Objekt enthält den Schließcode und den Grund, wie vom Server gesendet. openedSchreibgeschützt-
Gibt ein
Promisezurück, das erfüllt wird, sobald die Socket-Verbindung erfolgreich geöffnet ist. Unter anderem enthält dieses Objekt eine Instanz vonReadableStreamundWritableStreamzum Empfangen und Senden von Daten über die Verbindung.
Instanz-Methoden
close()-
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();
}
Siehe Verwendung von WebSocketStream zum Schreiben eines Clients für ein vollständiges Beispiel mit vollständiger Erklärung.
Spezifikationen
Derzeit nicht Teil einer Spezifikation. Siehe https://github.com/whatwg/websockets/pull/48 für den Standardisierungsfortschritt.
Browser-Kompatibilität
Siehe auch
- WebSocketStream: Integration von Streams mit der WebSocket-API, developer.chrome.com (2020)