>백엔드 개발 >PHP 문제 >브라우저는 어떻게 swoole에 액세스합니까?

브라우저는 어떻게 swoole에 액세스합니까?

PHPz
PHPz원래의
2023-03-29 11:28:45488검색

브라우저가 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.