Heim >Web-Frontend >js-Tutorial >WebSocket-Client mit JavaScript
Im vorherigen Artikel dieser Serie, „WebSocket mit JavaScript und Bun“, haben wir untersucht, wie man einen Server initialisiert, der sowohl HTTP-Anfragen als auch WebSocket-Verbindungen verarbeiten kann.
Wir haben eine Regel für HTTP-Anfragen definiert, um die Datei index.html bereitzustellen, wenn eine Anfrage an / gestellt wird. Die Datei index.html enthält die clientseitige Logik zum Herstellen einer Verbindung mit dem WebSocket-Server und zum Senden von Nachrichten als Client.
In der in „WebSocket mit JavaScript und Bun“ erläuterten Abrufmethode des Servers ist dieser Code implementiert:
if (url.pathname === "/") return new Response(Bun.file("./index.html"));
Das bedeutet, dass bei einer Browseranfrage an http://localhost:8080/ der Inhalt der Datei index.html an den Browser gesendet wird.
Der HTML-Code rendert ein einfaches Formular mit Eingabetext und einer Schaltfläche und liefert die Logik für die Verbindung zum WebSocket-Server als Client.
<!doctype html> <html> <head> <title>WebSocket with Bun and JavaScript</title> <script> let echo_service; append = function (text) { document .getElementById("websocket_events") .insertAdjacentHTML("beforeend", "<li>" + text + ";</li>"); }; window.onload = function () { echo_service = new WebSocket("ws://127.0.0.1:8080/chat"); echo_service.onmessage = function (event) { append(event.data); }; echo_service.onopen = function () { append("? Connected to WebSocket!"); }; echo_service.onclose = function () { append("Connection closed"); }; echo_service.onerror = function () { append("Error happens"); }; }; function sendMessage(event) { console.log(event); let message = document.getElementById("message").value; echo_service.send(message); } </script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css" /> </head> <body> <main> <h2> Explaining the client code </h2> <p>This code creates a simple <strong>WebSocket client</strong> in a browser to interact with a WebSocket server. Here's a detailed explanation of its components:</p> <hr> <h3> The HTML structure </h3> <pre class="brush:php;toolbar:false"><!doctype html> <html> <head> <title>WebSocket with Bun and JavaScript</title> </head> <body> <main> <ul> <li>The input field (<input> <li>The submit button (<input type="button">): when clicked, it triggers the sendMessage(event) function to send the typed message to the server.
window.onload = function () { echo_service = new WebSocket("ws://127.0.0.1:8080/chat"); ... };
Der WebSocket-Client verfügt über vier Hauptereignishandler:
if (url.pathname === "/") return new Response(Bun.file("./index.html"));
<!doctype html> <html> <head> <title>WebSocket with Bun and JavaScript</title> <script> let echo_service; append = function (text) { document .getElementById("websocket_events") .insertAdjacentHTML("beforeend", "<li>" + text + ";</li>"); }; window.onload = function () { echo_service = new WebSocket("ws://127.0.0.1:8080/chat"); echo_service.onmessage = function (event) { append(event.data); }; echo_service.onopen = function () { append("? Connected to WebSocket!"); }; echo_service.onclose = function () { append("Connection closed"); }; echo_service.onerror = function () { append("Error happens"); }; }; function sendMessage(event) { console.log(event); let message = document.getElementById("message").value; echo_service.send(message); } </script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css" /> </head> <body> <main> <h2> Explaining the client code </h2> <p>This code creates a simple <strong>WebSocket client</strong> in a browser to interact with a WebSocket server. Here's a detailed explanation of its components:</p> <hr> <h3> The HTML structure </h3> <pre class="brush:php;toolbar:false"><!doctype html> <html> <head> <title>WebSocket with Bun and JavaScript</title> </head> <body> <main> <ul> <li>The input field (<input> <li>The submit button (<input type="button">): when clicked, it triggers the sendMessage(event) function to send the typed message to the server.
window.onload = function () { echo_service = new WebSocket("ws://127.0.0.1:8080/chat"); ... };
echo_service.onopen = function () { append("? Connected to WebSocket!"); };
echo_service.onmessage = function (event) { append(event.data); };
echo_service.onclose = function () { append("Connection closed"); };
echo_service.onerror = function () { append("Error happens"); };
Diese Dienstprogrammfunktion fügt WebSocket-Ereignisse und -Nachrichten zum
insertAdjacentHTML("beforeend", "
function sendMessage(event) { let message = document.getElementById("message").value; echo_service.send(message); }
PicoCSS bietet einen leichten und eleganten Stil für die Seite und stellt sicher, dass das Formular und das Ereignisprotokoll ohne zusätzliches benutzerdefiniertes CSS elegant aussehen.
In diesem Artikel wurde untersucht, wie ein WebSocket-Client für die Kommunikation mit einem WebSocket-Server implementiert wird. Im vorherigen Artikel dieser Serie haben wir uns auf die Strukturierung eines einfachen WebSocket-Servers konzentriert.
Im nächsten Artikel werden wir die WebSocket-Funktionalität weiter untersuchen, indem wir Broadcasting-Logik implementieren. Mit dieser Funktion können Nachrichten von einem Client an alle verbundenen Clients weitergeleitet werden, was sie für die Erstellung von Echtzeitanwendungen wie Chat-Systemen, Tools für die Zusammenarbeit oder Live-Benachrichtigungen unerlässlich macht.
Bleiben Sie dran!
Das obige ist der detaillierte Inhalt vonWebSocket-Client mit JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!