WebSocket은 실시간 통신을 달성하기 위해 서버와 클라이언트 간에 실시간 연결을 설정할 수 있는 전이중 통신 프로토콜입니다. 웹 개발에서 일반적으로 사용되는 PHP 프레임워크는 ThinkPHP입니다. 그러면 ThinkPHP6에서 실시간 통신을 위해 WebSocket을 어떻게 사용할 수 있을까요?
먼저 서버에 swoole 확장을 설치해야 합니다.
composer require swoole/swoole
참고: swoole 확장을 사용하려면 PHP 버전 >= 7.0이 필요합니다.
ThinkPHP6에서는 사용자 정의 명령을 통해 WebSocket 서비스를 생성할 수 있습니다. 명령줄 도구를 열고 프로젝트 루트 디렉터리에 들어가서 다음 명령을 실행합니다.
php think make:command WebSocket
명령을 실행하면 app/command 디렉터리에 WebSocket.php 파일이 생성됩니다. 이 파일에 다음 코드를 추가합니다.
<?php namespace appcommand; use swoole_websocket_server; use swoole_http_request; use thinkconsoleCommand; use thinkconsoleInput; use thinkconsoleOutput; class WebSocket extends Command { protected function configure() { // 给命令起一个名字 $this->setName('swoole:websocket') ->setDescription('Start websocket server'); } protected function execute(Input $input, Output $output) { $server = new swoole_websocket_server("0.0.0.0", 9501); // 监听WebSocket连接打开事件 $server->on('open', function (swoole_websocket_server $server, swoole_http_request $request) { echo "connection open: {$request->fd} "; }); // 监听WebSocket消息事件 $server->on('message', function (swoole_websocket_server $server, $frame) { echo "received message: {$frame->data} "; // 广播消息给所有连接的客户端 $server->push($frame->fd, "this is server"); }); // 监听WebSocket连接关闭事件 $server->on('close', function ($ser, $fd) { echo "connection close: {$fd} "; }); $server->start(); } }
다음 명령을 실행하여 WebSocket 서비스를 시작합니다.
php think swoole:websocket
뷰에서 JavaScript의 WebSocket API를 사용하여 서버와 통신할 수 있습니다. 실시간 . 예:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebSocket</title> </head> <body> <script> var ws = new WebSocket('ws://localhost:9501'); ws.onopen = function(){ console.log('WebSocket open'); }; ws.onmessage = function(ev){ console.log('WebSocket message: ' + ev.data); }; ws.onclose = function(){ console.log('WebSocket close'); }; </script> </body> </html>
위 코드는 WebSocket 인스턴스를 생성하고 로컬 WebSocket 서비스에 연결합니다. 서버가 메시지를 보내면 처리를 위해 onmessage 함수가 호출됩니다. 인스턴스의 send 함수를 호출하여 서버에 메시지를 보낼 수 있습니다.
이제 WebSocket 서비스가 성공적으로 생성되어 프런트 엔드와 실시간 통신 연결이 구축되었습니다.
요약
ThinkPHP6에서는 swoole 확장 기능을 이용하여 WebSocket 실시간 통신 기능을 쉽게 구현할 수 있습니다. 사용자 정의 명령을 통해 WebSocket 서비스를 활성화하고 이를 JavaScript WebSocket API와 결합하면 웹 애플리케이션에서 실시간 통신을 달성하여 다양한 비즈니스 요구 사항을 충족할 수 있습니다.
위 내용은 ThinkPHP6에서 실시간 통신을 위해 WebSocket을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!