Dans l'article précédent de cette série, "WebSocket avec JavaScript et Bun", nous avons exploré comment initialiser un serveur capable de gérer à la fois les requêtes HTTP et les connexions WebSocket.
Nous avons défini une règle pour que les requêtes HTTP servent le fichier index.html lorsqu'une requête est adressée à /. Le fichier index.html contient la logique côté client pour établir une connexion avec le serveur WebSocket et envoyer des messages en tant que client.
Dans la méthode fetch du serveur expliquée dans "WebSocket avec JavaScript et Bun" est implémenté ce code :
if (url.pathname === "/") return new Response(Bun.file("./index.html"));
Cela signifie que lorsqu'une requête du navigateur est faite à http://localhost:8080/, le contenu du fichier index.html est envoyé au navigateur.
Le HTML affichera un formulaire simple avec du texte d'entrée et un bouton et enverra la logique de connexion au serveur WebSocket en tant que 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"); ... };
Le client WebSocket dispose de quatre gestionnaires d'événements principaux :
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"); };
Cette fonction utilitaire ajoute des événements et des messages WebSocket au
insertAdjacentHTML("beforeend", "
function sendMessage(event) { let message = document.getElementById("message").value; echo_service.send(message); }
PicoCSS fournit un style léger et élégant pour la page, garantissant que le formulaire et le journal des événements sont impeccables sans CSS personnalisé supplémentaire.
Cet article explique comment implémenter un client WebSocket pour communiquer avec un serveur WebSocket. Dans l'article précédent de cette série, nous nous sommes concentrés sur la structuration d'un serveur WebSocket de base.
Dans le prochain article, nous explorerons plus en détail la fonctionnalité WebSocket en implémentant une logique de diffusion. Cette fonctionnalité permet de transmettre les messages d'un client à tous les clients connectés, ce qui la rend essentielle pour créer des applications en temps réel telles que des systèmes de chat, des outils collaboratifs ou des notifications en direct.
Restez à l'écoute !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!