>백엔드 개발 >PHP 튜토리얼 >PHP 다중 스레드 프로그래밍 소개: swoole 확장을 사용하여 WebSocket 서버 만들기

PHP 다중 스레드 프로그래밍 소개: swoole 확장을 사용하여 WebSocket 서버 만들기

WBOY
WBOY원래의
2023-06-29 11:06:321072검색

PHP 다중 스레드 프로그래밍 소개: swoole 확장을 사용하여 WebSocket 서버 만들기

머리말
웹 개발에서 실시간 통신이 점점 더 중요한 요구 사항이 되었습니다. 기존 HTTP 프로토콜은 실시간 통신 요구 사항을 충족할 수 없으며 WebSocket 프로토콜이 솔루션이 되었습니다. PHP에서 WebSocket 서버를 구현하기 위해 swoole 확장을 사용하여 다중 스레드 서버를 만들 수 있습니다.

1.스울이란?
swoole은 비동기, 멀티스레딩 및 코루틴을 지원하는 PHP 확장입니다. Swoole을 사용하면 PHP에서 동시 서버, 비동기 작업, 긴 연결 및 고성능 네트워크 애플리케이션을 만들 수 있습니다. TCP, UDP, HTTP, WebSocket 등과 같은 다양한 프로토콜에 대한 지원을 포함하여 이러한 기능을 구현하는 일련의 API를 제공합니다.

2. 준비
시작하기 전에 스울 확장 프로그램이 설치되어 있는지 확인해야 합니다. 다음 명령을 사용하여 Linux 시스템에 swoole을 설치할 수 있습니다:

pecl install swoole

또는 Windows 시스템의 경우 공식 웹사이트에서 swoole 바이너리 패키지를 다운로드하여 PHP 확장 디렉터리에 추출할 수 있습니다. 그런 다음 php.ini 파일에 다음 구성을 추가합니다.

extension=swoole

3. WebSocket 서버 생성
아래에서는 간단한 예를 사용하여 swoole 확장을 사용하여 WebSocket 서버를 생성하는 방법을 보여줍니다.

  1. 먼저 server.php 파일을 생성하고 swoole 확장을 도입한 후 WebSocket 서버를 초기화합니다.

    <?php
    $server = new SwooleWebSocketServer("0.0.0.0", 9501);
  2. 그런 다음 작업자 프로세스 수 및 수신 포트와 같은 일부 서버 매개변수를 설정할 수 있습니다. :

    $server->set([
     'worker_num' => 4,
     'max_request' => 10000,
    ]);
  3. 다음으로 WebSocket 연결의 공개 이벤트를 듣고 그에 따라 처리합니다.

    $server->on('open', function ($server, $request) {
     echo "new connection: {$request->fd}
    ";
    });
  4. 그런 다음 WebSocket 메시지 이벤트를 듣고 그에 따라 처리합니다.

    $server->on('message', function ($server, $frame) {
     echo "received message: {$frame->data}
    ";
     // 可以在这里编写自定义的业务逻辑处理
    });
  5. 마지막으로 우리는 WebSocket 연결을 듣고 이벤트를 닫고 그에 따라 처리합니다:

    $server->on('close', function ($server, $fd) {
     echo "connection closed: {$fd}
    ";
    });
  6. 마지막으로 WebSocket 서버를 시작합니다:

    $server->start();
  7. 명령줄에서 server.php를 실행합니다:

    php server.php

4. WebSocket을 테스트합니다. server
이제 WebSocket 서버가 생성되었으므로 간단한 HTML 페이지를 사용하여 테스트할 수 있습니다.

  1. 먼저 index.html 파일을 생성하고 다음 코드를 작성하세요.

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>WebSocket Test</title>
     <script>
         var ws = new WebSocket("ws://localhost:9501");
         ws.onopen = function() {
             console.log("WebSocket connection open.");
         };
         ws.onmessage = function(evt) {
             console.log("received message: " + evt.data);
         };
         ws.onclose = function() {
             console.log("WebSocket connection closed.");
         };
     </script>
    </head>
    <body>
     <h1>WebSocket Test</h1>
    </body>
    </html>
  2. 브라우저를 열고 index.html 페이지를 방문하세요. WebSocket 서버에 대한 연결 상태와 수신된 메시지는 브라우저 콘솔에서 확인할 수 있습니다.

요약
swoole 확장을 사용하면 PHP에서 WebSocket 서버를 쉽게 만들 수 있습니다. 실제 프로젝트 개발에서 특정 요구 사항에 따라 WebSocket 서버의 기능을 더욱 개선하고 최적화할 수 있습니다. 동시에 swoole은 동시, 비동기 및 고성능 네트워크 애플리케이션을 처리하는 데 사용할 수 있는 더 많은 기능과 API를 제공하여 심층적인 학습과 실습을 가능하게 합니다.

위 내용은 PHP 다중 스레드 프로그래밍 소개: swoole 확장을 사용하여 WebSocket 서버 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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