이 시리즈의 이전 기사 "JavaScript와 Bun이 포함된 WebSocket"에서는 HTTP 요청과 WebSocket 연결을 모두 처리할 수 있는 서버를 초기화하는 방법을 살펴보았습니다.
/에 대한 요청이 있을 때 index.html 파일을 제공하도록 HTTP 요청에 대한 규칙을 정의했습니다. index.html 파일에는 WebSocket 서버와의 연결을 설정하고 클라이언트로서 메시지를 보내기 위한 클라이언트 측 로직이 포함되어 있습니다.
"JavaScript 및 Bun이 포함된 WebSocket"에 설명된 서버의 가져오기 메서드에서 다음 코드가 구현됩니다.
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 기능을 더 자세히 살펴보겠습니다. 이 기능을 사용하면 한 클라이언트의 메시지를 연결된 모든 클라이언트에 전달할 수 있으므로 채팅 시스템, 공동 작업 도구 또는 실시간 알림과 같은 실시간 애플리케이션을 구축하는 데 필수적입니다.
기대해 주세요!
위 내용은 JavaScript를 사용한 WebSocket 클라이언트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!