PHP WebSocket 개발 사례: 특정 기능을 구현하는 실제 사례
소개:
인터넷이 발전하면서 전통적인 HTTP 프로토콜은 실시간 통신에 몇 가지 한계를 갖게 되었습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 통신을 실현할 수 있습니다. 이 기사에서는 실제 사례를 사용하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!