ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript を使用した WebSocket クライアント
このシリーズの前の記事「JavaScript と Bun を使用した WebSocket」では、HTTP リクエストと WebSocket 接続の両方を処理できるサーバーを初期化する方法を検討しました。
/ に対してリクエストが行われたときに、index.html ファイルを処理する HTTP リクエストのルールを定義しました。 Index.html ファイルには、WebSocket サーバーとの接続を確立し、クライアントとしてメッセージを送信するためのクライアント側のロジックが含まれています。
「JavaScript と Bun を使用した WebSocket」で説明したサーバーの fetch メソッドでは、次のコードが実装されています。
if (url.pathname === "/") return new Response(Bun.file("./index.html"));
これは、ブラウザのリクエストが http://localhost:8080/ に対して行われると、index.html ファイルのコンテンツがブラウザに送信されることを意味します。
HTML は入力テキストとボタンを含む単純なフォームをレンダリングし、クライアントとして WebSocket サーバーに接続するためのロジックを送信します。
<!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"); ... };
WebSocket クライアントには 4 つの主要なイベント ハンドラーがあります。
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"); };
このユーティリティ関数は、WebSocket イベントとメッセージを
insertAdjacentHTML("beforeend", "
function sendMessage(event) { let message = document.getElementById("message").value; echo_service.send(message); }
PicoCSS はページに軽量でエレガントなスタイルを提供し、カスタム CSS を追加しなくてもフォームとイベント ログが洗練されたように見えるようにします。
この記事では、WebSocket クライアントを実装して WebSocket サーバーと通信する方法について説明しました。このシリーズの前の記事では、基本的な WebSocket サーバーの構築に焦点を当てました。
次の記事では、ブロードキャスト ロジックを実装することで、WebSocket の機能をさらに詳しく説明します。この機能により、1 つのクライアントからのメッセージを接続されているすべてのクライアントに転送できるため、チャット システム、共同ツール、ライブ通知などのリアルタイム アプリケーションの構築に不可欠になります。
乞うご期待!
以上がJavaScript を使用した WebSocket クライアントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。