브라우저가 swoole에 액세스하는 방법
머리말
Swoole은 PHP 언어로 작성된 고성능, 비동기식 네트워크 통신 프레임워크입니다. Swoole은 특히 WebSocket, HTTP, TCP, UDP 및 기타 프로토콜 개발에 적합한 동시성 네트워크 애플리케이션을 쉽게 구축하는 데 사용할 수 있습니다.
Swoole을 사용하는 과정에서 브라우저를 통해 Swoole에서 작성한 네트워크 애플리케이션에 접속해야 하는 경우가 있습니다. 이 기사에서는 개발 중에 디버깅 및 테스트를 용이하게 하기 위해 브라우저가 Swoole에 액세스하는 방법을 소개합니다.
1. HTTP 프로토콜
먼저 HTTP 프로토콜을 이해해야 합니다. HTTP(Hypertext Transfer Protocol)는 일반적으로 TCP 프로토콜을 기반으로 하이퍼미디어 문서를 전송하기 위한 응용 프로그램 계층 프로토콜입니다.
HTTP 프로토콜은 클라이언트-서버 모드를 채택합니다. 클라이언트는 요청을 시작하고 서버는 응답을 반환합니다. HTTP 요청은 요청 헤더와 요청 본문으로 구성되고, 응답은 응답 헤더와 응답 본문으로 구성됩니다. 요청 헤더와 응답 헤더는 키-값 쌍의 형태로 표현됩니다. 예:
요청 헤더:
GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate, br Connection: keep-alive Upgrade-Insecure-Requests: 1
응답 헤더:
HTTP/1.1 200 OK Date: Tue, 22 Jun 2021 06:59:43 GMT Server: Apache/2.4.41 (Ubuntu) Last-Modified: Mon, 21 Jun 2021 01:53:04 GMT ETag: "2eab-5c4965a6870bb" Accept-Ranges: bytes Content-Length: 11947 Vary: Accept-Encoding Content-Type: text/html
2. Swoole HTTP 서버
Swoole은 웹을 쉽게 구축할 수 있는 HTTP 서버를 제공합니다. HTTP 프로토콜을 기반으로 하는 애플리케이션입니다. Swoole HTTP 서버를 사용하면 브라우저가 Swoole로 작성된 웹 애플리케이션에 액세스할 수 있습니다. 다음은 간단한 예입니다.
<?php $http = new Swoole\Http\Server("0.0.0.0", 9501); $http->on("start", function ($server) { echo "Swoole http server is started at http://127.0.0.1:9501\n"; }); $http->on("request", function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello, World!\n"); }); $http->start();
이 예에서는 Swoole HTTP 서버를 생성하고 포트 9501에서 수신 대기합니다. 브라우저가 이 서버에 액세스하면 간단한 텍스트 문자열 "Hello, World!"가 반환됩니다.
3. Swoole HTTP 서버에 액세스
다음으로 브라우저에서 Swoole HTTP 서버에 액세스하는 방법을 설명하겠습니다. Swoole HTTP 서버가 로컬 호스트의 포트 9501에서 실행되고 있다고 가정하면 다음 URL을 사용하여 서버에 액세스할 수 있습니다.
http://127.0.0.1:9501/
이 URL을 브라우저에 입력하면 "Hello, World!"가 반환한 텍스트 문자열이 표시됩니다. 브라우저.
Swoole HTTP 서버에서는 $request 객체를 사용하여 클라이언트가 보낸 요청 정보를 얻을 수 있습니다. 예:
$http->on("request", function ($request, $response) { $message = "Method: " . $request->server["request_method"] . "\n"; $message .= "URI: " . $request->server["request_uri"] . "\n"; $message .= "Headers: " . json_encode($request->header) . "\n"; $message .= "Content: " . $request->rawContent() . "\n"; $response->header("Content-Type", "text/plain"); $response->end($message); });
이 예에서는 $request 객체를 사용하여 요청 방법인 URI를 포함한 요청 정보를 얻습니다. , 요청 헤더 및 요청 본문. 이렇게 하면 브라우저에서 보낸 요청 정보를 쉽게 이해할 수 있습니다.
4. WebSocket 프로토콜
Swoole은 HTTP 프로토콜 외에도 WebSocket 프로토콜도 지원합니다. WebSocket 프로토콜은 TCP 프로토콜을 기반으로 하는 프로토콜로, 양방향 통신이 가능하고 실시간 통신 시나리오에 매우 적합합니다. Swoole은 PHP에서 WebSocket 기능을 쉽게 구현할 수 있도록 WebSocket 서버를 제공합니다.
다음은 간단한 예입니다.
<?php $server = new Swoole\WebSocket\Server("0.0.0.0", 9501); $server->on("start", function ($server) { echo "Swoole WebSocket server is started at ws://127.0.0.1:9501\n"; }); $server->on('open', function (Swoole\WebSocket\Server $server, $request) { echo "WebSocket connection opened: {$request->fd}\n"; }); $server->on('message', function (Swoole\WebSocket\Server $server, $frame) { echo "Received message: {$frame->data}\n"; $server->push($frame->fd, "Received message: {$frame->data}"); }); $server->on('close', function (Swoole\WebSocket\Server $server, $fd) { echo "WebSocket connection closed: {$fd}\n"; }); $server->start();
이 예에서는 Swoole WebSocket 서버를 생성하고 포트 9501에서 수신 대기합니다. 클라이언트가 메시지를 보내면 서버는 변경되지 않은 메시지를 클라이언트에 반환합니다.
5. Swoole WebSocket 서버에 액세스
브라우저에서 Swoole WebSocket 서버에 액세스하는 것은 약간 복잡합니다. WebSocket 프로토콜은 HTTP 프로토콜을 기반으로 하지 않기 때문에 HTTP 서버에 액세스하는 것과 같은 URL을 사용할 수 없습니다.
JavaScript WebSocket API를 사용하여 브라우저에서 Swoole WebSocket 서버와 통신할 수 있습니다. 다음은 JavaScript WebSocket API를 사용하여 통신하는 예입니다.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebSocket Test</title> </head> <body> <input type="text" id="message" placeholder="Type your message here"> <button onclick="sendMessage()">Send Message</button> <ul id="messages"></ul> <script> var socket = new WebSocket("ws://127.0.0.1:9501/"); socket.onopen = function(event) { console.log("WebSocket is open now."); }; socket.onmessage = function(event) { var messages = document.getElementById("messages"); var message = document.createElement("li"); var content = document.createTextNode(event.data); message.appendChild(content); messages.appendChild(message); }; function sendMessage() { var input = document.getElementById("message"); var message = input.value; socket.send(message); input.value = ""; } </script> </body> </html>
이 예는 WebSocket 개체를 생성하고 Swoole WebSocket 서버에 연결합니다. 사용자가 텍스트 상자에 메시지를 입력하고 보내기 버튼을 클릭하면 JavaScript 코드가 메시지를 서버로 보냅니다. 메시지를 받은 후 서버는 메시지를 그대로 클라이언트에 반환하고 클라이언트는 해당 메시지를 메시지 목록에 표시합니다.
6. 요약
이 문서에서는 브라우저가 HTTP 및 WebSocket 프로토콜을 포함하여 Swoole에서 작성한 네트워크 애플리케이션에 액세스하는 방법을 소개합니다. 이 기사의 소개를 통해 귀하는 브라우저에서 Swoole 애플리케이션을 디버그하고 테스트하는 방법에 대한 기술을 습득했다고 믿습니다.
위 내용은 브라우저는 어떻게 swoole에 액세스합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!