laravel+websocket은 인스턴트 메시징 개발에 필수적인 도구인데 Laravel에서 workerman에 액세스하는 방법은 무엇입니까? 다음 글은 라라벨에서 웹소켓에 빠르게 접근하는 방법을 소개하겠습니다. 도움이 되셨으면 좋겠습니다.
서문: 여기서는 Workererman을 기반으로 개발된 GatewayWorker를 소켓의 핵심 구성 요소로 사용합니다. 왜냐하면 Workererman은 GatewayWorker보다 낮은 수준이고 개발자의 프로세스 프로그래밍 경험이 더 많은 순수 소켓 클래스 라이브러리이기 때문입니다. 그리고 대부분의 개발자들은 IM, 게임 등에 Workerman을 사용하고 있는데, 이는 더 빠르고 강력한 Gateway Worker를 기반으로 직접 개발한 것입니다.
composer require workerman/gateway-worker -vvv
다음 명령을 사용하여 AppConsoleCommands 아래에 명령줄 파일을 생성하고 아래 코드를 파일에 복사합니다. [관련 추천: "workerman Tutorial"]
php artisan make:command WorkermanCommand
<?php namespace App\Console\Commands; use GatewayWorker\BusinessWorker; use GatewayWorker\Gateway; use GatewayWorker\Register; use Illuminate\Console\Command; use Workerman\Worker; class WorkermanCommand extends Command { protected $signature = 'workman {action} {--d}'; //执行该命令的方式 protected $description = 'Start a Workerman server.'; public function handle() { global $argv; $action = $this->argument('action'); $argv[0] = 'wk'; $argv[1] = $action; $argv[2] = $this->option('d') ? '-d' : ''; // -d守护模式,不会因为关闭系统命令页面而被杀掉进程。 没有-d则关闭命令页面直接退出进程 $this->start(); } private function start() { $this->startGateWay(); $this->startBusinessWorker(); $this->startRegister(); Worker::runAll(); } private function startBusinessWorker() { $worker = new BusinessWorker(); $worker->name = 'BusinessWorker'; $worker->count = 1; $worker->registerAddress = '127.0.0.1:1236'; $worker->eventHandler = \App\Events::class; //用作监听事件的文件 } private function startGateWay() { //因为小程序等一些平台,要求使用wss进行socket,所以,这里需要配置下wss //此处的cert.pem和key.key是域名的证书文件 $content = array( 'ssl' => array( 'local_cert' => public_path('cert.pem'), 'local_pk' => public_path('key.key'), 'verify_peer' => false ) ); $gateway = new Gateway("websocket://0.0.0.0:2346", $content); //如果不需要wss,则不用加入content这个参数 $gateway->transport = 'ssl';//不需要wss,也不用加入这个参数。 $gateway->name = 'Gateway'; $gateway->count = 1; $gateway->lanIp = '127.0.0.1'; $gateway->startPort = 2300; $gateway->pingInterval = 30; $gateway->pingNotResponseLimit = 0; $data = array( 'type' => 'heart' ); $gateway->pingData = json_encode($data, true); $gateway->registerAddress = '127.0.0.1:1236'; } private function startRegister() { new Register('text://0.0.0.0:1236'); } }
다양한 Workman 이벤트를 수신하고 처리할 수 있는 app/Events.php 파일을 생성하세요
<?php namespace App\Workerman; class Events { public static function onWorkerStart($businessWorker) { } public static function onConnect($client_id) { } public static function onWebSocketConnect($client_id, $data) { } public static function onMessage($client_id, $message) { } public static function onClose($client_id) { } }
. 명령줄에서 지원되는 명령은 start | stop | restart입니다.
으로 시작하는 관련 메소드가 비활성화되어 있는지 확인하세요. PHP 구성 파일에서 비활성화 기능을 찾아
pcntl으로 시작하는 모든 메소드를 삭제하세요. 6. GatewayWorker 매뉴얼
gateway-worker 매뉴얼위 내용은 Laravel에서 Workerman에 액세스하는 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!