>백엔드 개발 >PHP 튜토리얼 >PHP WebSocket 개발 예제: 특정 기능을 구현하는 실제 사례

PHP WebSocket 개발 예제: 특정 기능을 구현하는 실제 사례

WBOY
WBOY원래의
2023-09-11 12:21:271374검색

PHP WebSocket开发实例:如何实现特定功能的实用案例

PHP WebSocket 개발 사례: 특정 기능을 구현하는 실제 사례

소개:
인터넷이 발전하면서 전통적인 HTTP 프로토콜은 실시간 통신에 몇 가지 한계를 갖게 되었습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 통신을 실현할 수 있습니다. 이 기사에서는 실제 사례를 사용하여 PHP WebSocket을 사용하여 특정 기능을 구현하는 방법을 소개합니다.

  1. 소개
    WebSocket은 클라이언트와 서버 사이에 긴 연결을 설정하여 양방향 실시간 통신을 가능하게 하는 프로토콜입니다. 기존 HTTP 요청-응답 모델과 달리 WebSocket 연결은 클라이언트와 서버 사이에 지속적인 통신 채널을 설정하여 서버가 클라이언트에 데이터를 적극적으로 푸시할 수 있도록 합니다.
  2. 실용 사례: 온라인 채팅방
    온라인 채팅방은 WebSocket의 가장 일반적인 응용 프로그램 중 하나입니다. 사용자는 브라우저를 통해 채팅방 페이지에 접속해 실시간으로 다른 온라인 사용자와 소통할 수 있다. 아래에서는 실제 사례를 사용하여 PHP WebSocket을 사용하여 간단한 온라인 채팅방을 구현하는 방법을 소개합니다.

(1) WebSocket 서버 구축
먼저 WebSocket 서버를 구축해야 합니다. PHP의 swoole 확장을 사용하여 WebSocket 서버를 구축할 수 있습니다. Swoole은 WebSocket을 지원하는 고성능 PHP 확장입니다. 다음 코드를 실행하여 WebSocket 서버를 생성할 수 있습니다.

<?php
$server = new swoole_websocket_server("0.0.0.0", 9501);

$server->on('open', function ($server, $request) {
    echo "new connection open: ".$request->fd;
});

$server->on('message', function ($server, $frame) {
    echo "received message: ".$frame->data;
});

$server->on('close', function ($ser, $fd) {
    echo "connection close: ".$fd;
});

$server->start();
?>

이 코드에서는 수신 IP 주소가 0.0.0.0이고 포트 번호가 9501인 WebSocket 서버를 생성합니다. 새로운 연결이 설정되면 서버는 자동으로 open事件处理函数;当接收到客户端发送过来的消息时,服务器会调用message事件处理函数;而当连接关闭时,服务器会调用close 이벤트 처리 기능을 호출합니다.

(2) 프론트엔드 페이지 개발
다음으로, 채팅방 인터페이스를 표시하고 서버와 통신하기 위한 프론트엔드 페이지를 개발해야 합니다. 다음은 간단한 프런트 엔드 페이지 코드입니다.

<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Chat Room</title>
    <script>
        var socket = new WebSocket("ws://localhost:9501");
        
        socket.onopen = function(event) {
            console.log("WebSocket connection open");
        };
        
        socket.onmessage = function(event) {
            console.log("Received message: " + event.data);
        };
        
        socket.onclose = function(event) {
            console.log("WebSocket connection closed");
        };
    </script>
</head>
<body>
    <h1>WebSocket Chat Room</h1>
    <div id="chat-messages"></div>
    <input type="text" id="input-message">
    <button onclick="sendMessage()">Send</button>
    
    <script>
        function sendMessage() {
            var message = document.getElementById("input-message").value;
            socket.send(message);
        }
    </script>
</body>
</html>

이 코드는 WebSocket을 통해 서버에 연결하고 연결 열기, 메시지 수신 및 연결 닫기에 대한 처리 기능을 정의합니다. 버튼과 텍스트 상자를 통해 사용자는 채팅 내용을 입력하고 서버로 보낼 수 있습니다.

(3) 채팅방 기능 구현
서버 측에서 채팅방 기능을 구현하기 위한 로직을 추가해야 합니다. 서버 코드를 다음과 같이 수정하세요.

<?php
$server = new swoole_websocket_server("0.0.0.0", 9501);

$server->on('open', function ($server, $request) {
    echo "new connection open: ".$request->fd."
";
});

$server->on('message', function ($server, $frame) {
    echo "received message: ".$frame->data."
";
    
    // 广播消息给所有客户端
    foreach ($server->connections as $fd) {
        $server->push($fd, $frame->data);
    }
});

$server->on('close', function ($ser, $fd) {
    echo "connection close: ".$fd."
";
});

$server->start();
?>

수정된 코드에서는 클라이언트로부터 메시지를 받으면 서버가 연결된 모든 클라이언트에게 메시지를 브로드캐스트합니다. 이를 통해 사용자가 채팅방 페이지에서 보내는 모든 메시지는 실시간으로 다른 사용자의 페이지에 표시됩니다.

요약:
위의 실제 사례를 통해 PHP WebSocket을 사용하여 간단한 온라인 채팅방을 구현하는 방법을 배웠습니다. PHP의 swoole 확장 덕분에 WebSocket 기반 서버를 쉽게 구축하여 실시간 통신 기능을 구현할 수 있습니다. 또한 WebSocket은 실시간 데이터 표시, 여러 사람의 공동 편집 등과 같은 더 많은 시나리오에서 사용할 수 있습니다. 이 글이 PHP WebSocket을 이해하고 적용하는데 도움이 되기를 바랍니다.

위 내용은 PHP WebSocket 개발 예제: 특정 기능을 구현하는 실제 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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