모바일 인터넷 기술의 급속한 발전으로 인스턴트 메시징과 실시간 상호 작용에 대한 사용자의 요구가 점차 증가했습니다. 웹에서 실시간 통신을 위한 중요한 프로토콜인 WebSocket 프로토콜은 전이중 통신, 실시간 푸시 및 낮은 대기 시간이라는 특성을 가지며 실시간 상호 작용 시나리오에서 선호되는 프로토콜이 되었습니다. 따라서 웹 개발에서는 WebSocket을 사용하여 실시간 통신을 구현하는 방법을 익혀야 합니다.
PHP에서는 Swoole 확장을 사용하여 WebSocket 기능을 구현할 수 있습니다. 하지만 Swoole을 배포하고 설정하는 데는 많은 시간과 노력이 필요합니다. Swoole에 익숙하지 않은 일부 개발자의 경우 학습 비용도 상대적으로 높습니다.
오늘은 ThinkPHP6에서 WebSocket을 사용하는 방법을 소개하겠습니다.
ThinkPHP6에서 WebSocket을 사용하기 전에 topthink/thinker
확장 기능을 설치해야 합니다. topthink/thinker
扩展。
composer require topthink/thinker:dev-master
topthink/thinker
是一个命令行工具,用于在 ThinkPHP6 中运行 PHP 代码和管理异步任务。
我们需要在项目的配置文件 config/socket.php
中配置 WebSocket。
<?php return [ // WebSocket服务器地址,使用内网穿透时填写内网地址 'server' => '127.0.0.1:9501', // WebSocket的应用类,需要实现 hinkworkerServer 接口 'worker_class' => 'appcontrollerWebSocket', ];
我们需要指定 server
的地址以及实现 Server
接口的类 worker_class
,在这里我们将实现 WebSocket 功能的控制器类命名为 WebSocket
,放在 appcontroller
目录下。
我们在 appcontroller
目录下创建一个名为 WebSocket
的控制器,在控制器中实现 Server
接口。
<?php namespace appcontroller; use thinkworkerServer; class WebSocket implements Server { protected $socket = 'websocket://127.0.0.1:9501'; public function onMessage($connection, $data) { foreach ($this->worker->connections as $conn) { $conn->send('user ' . $connection->id . ' said: ' . $data); } } public function onConnect($connection) { echo "new connection from ip " . $connection->getRemoteIp() . " "; } public function onClose($connection) { echo "connection closed: " . $connection->id . " "; } public function onWorkerStart($worker) { // 初始化 } }
在 WebSocket
控制器类中,我们需要实现 onMessage
、onConnect
、onClose
和 onWorkerStart
四个方法。
onMessage
: 当客户端发送数据时,会触发 onMessage
方法,参数 $connection
表示客户端的连接对象,$data
表示客户端发送的数据。onConnect
: 在客户端连接的时候会触发 onConnect
方法,参数 $connection
表示客户端的连接对象。onClose
: 在客户端断开连接的时候会触发 onClose
方法,参数 $connection
表示客户端的连接对象。onWorkerStart
: 在工作进程启动的时候会触发 onWorkerStart
方法,参数 $worker
表示当前工作进程的对象。配置好 WebSocket 之后,我们可以使用 think
命令来启动 WebSocket。
php think worker:start
上述命令会启动一个 WebSocket 服务,并在控制台输出运行日志。
WebSocket 实现之后,我们可以使用 WebSocket 的客户端进行测试。我们可以使用 Chrome
浏览器并安装 Simple WebSocket Client
插件来进行测试。在插件中输入 WebSocket 服务器的地址,点击连接,即可开始使用 WebSocket 通信。
在 Simple WebSocket Client
rrreee
topthink/thinker
는 ThinkPHP6에서 PHP 코드를 실행하고 비동기 작업을 관리하기 위한 명령줄 도구입니다. 2. WebSocket 구성프로젝트 구성 파일 config/socket.php
에서 WebSocket을 구성해야 합니다. 🎜rrreee🎜 server
의 주소와 Server
인터페이스를 구현하는 worker_class
클래스를 지정해야 합니다. 여기서는 해당 컨트롤러 클래스의 이름을 지정합니다. WebSocket 기능을 구현합니다. 이는 WebSocket
이며 appcontroller
디렉터리에 있습니다. 🎜🎜3. WebSocket 구현🎜🎜 appcontroller
디렉토리에 WebSocket
이라는 컨트롤러를 생성하고 컨트롤러에 Server
인터페이스를 구현합니다. 🎜rrreee🎜 WebSocket
컨트롤러 클래스에서 onMessage
, onConnect
, onClose
및 를 구현해야 합니다. onWorkerStart
네 가지 메소드. 🎜onMessage
: 클라이언트가 데이터를 보내면 onMessage
메서드가 트리거됩니다. $connection
매개변수는 클라이언트의 메시지를 나타냅니다. 연결 개체, $data
는 클라이언트가 보낸 데이터를 나타냅니다. onConnect
: onConnect
메서드는 클라이언트가 연결될 때 트리거됩니다. $connection
매개변수는 클라이언트의 연결 개체를 나타냅니다. . onClose
: 클라이언트 연결이 끊어지면 onClose
메서드가 트리거됩니다. $connection
매개변수는 클라이언트의 연결을 나타냅니다. 물체. onWorkerStart
: onWorkerStart
메서드는 작업자 프로세스가 시작될 때 트리거됩니다. $worker
매개변수는 개체를 나타냅니다. 현재 작업자 프로세스. think
명령을 사용하여 WebSocket을 시작할 수 있습니다. 🎜rrreee🎜위 명령은 WebSocket 서비스를 시작하고 콘솔에 작업 로그를 출력합니다. 🎜🎜5. WebSocket 테스트🎜🎜WebSocket이 구현된 후에는 WebSocket 클라이언트를 사용하여 테스트할 수 있습니다. 테스트를 위해 Chrome
브라우저를 사용하고 Simple WebSocket Client
플러그인을 설치할 수 있습니다. 플러그인에 WebSocket 서버의 주소를 입력하고 Connect를 클릭하면 WebSocket 통신이 시작됩니다. 🎜🎜Simple WebSocket Client
에서 문자를 입력하고 전송을 클릭하면 백그라운드 콘솔에 출력 로그가 표시되어 WebSocket 통신이 정상적으로 작동하고 있음을 알 수 있습니다. 🎜🎜요약🎜🎜이 글에서는 ThinkPHP6에서 WebSocket을 사용하는 방법을 소개했습니다. WebSocket 프로토콜은 실시간 통신에 선호되는 프로토콜이며 사용 시나리오는 매우 광범위합니다. 실제 개발에서는 WebSocket을 사용하여 필요에 따라 실시간 통신 기능을 쉽게 구현하고 사용자 경험을 향상시킬 수 있습니다. 🎜위 내용은 ThinkPHP6에서 WebSocket 사용하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!