laravel框架中引入Workerman

1.安装Workerman

  首先在laravel根目录下安装Workerman

  命令:$ composer require workerman/gateway-worker

2.创建 Workerman 启动文件

  创建一个 artisan 命令行工具来启动 Socket 服务端,在 app/Console/Commands 目录下建立命令行文件。

  <?php

namespaceApp\Console\Commands;useGatewayWorker\BusinessWorker;useGatewayWorker\Gateway;useGatewayWorker\Register;useIlluminate\Console\Command;useWorkerman\Worker;classWorkermanCommandextendsCommand{protected$signature='workman {action} {--d}';protected$description='Start a Workerman server.';publicfunctionhandle(){global$argv;$action=$this->argument('action');$argv[0]='wk';$argv[1]=$action;$argv[2]=$this->option('d')?'-d':'';$this->start();}privatefunctionstart(){$this->startGateWay();$this->startBusinessWorker();$this->startRegister();Worker::runAll();}privatefunctionstartBusinessWorker(){$worker=newBusinessWorker();$worker->name='BusinessWorker';$worker->count=1;$worker->registerAddress='127.0.0.1:1236';$worker->eventHandler= \App\Workerman\Events::class;}privatefunctionstartGateWay(){$gateway=newGateway("websocket://0.0.0.0:2346");$gateway->name='Gateway';$gateway->count=1;$gateway->lanIp='127.0.0.1';$gateway->startPort=2300;$gateway->pingInterval=30;$gateway->pingNotResponseLimit=0;$gateway->pingData='{"type":"@heart@"}';$gateway->registerAddress='127.0.0.1:1236';}privatefunctionstartRegister(){newRegister('text://0.0.0.0:1236');}}

 

3.创建事件监听文件

  创建一个 app/Workerman/Events.php 文件来监听处理 workman 的各种事件。

  <?php

namespaceApp\Workerman;classEvents{publicstaticfunctiononWorkerStart($businessWorker){}publicstaticfunctiononConnect($client_id){}publicstaticfunctiononWebSocketConnect($client_id,$data){}publicstaticfunctiononMessage($client_id,$message){}publicstaticfunctiononClose($client_id){}}

 

 

4. 启动 Workerman 服务端

  在命令行里面执行,支持的命令大概有 start|stop|restart,其中 -d 的意思是 daemon 模式。

  $ php artisan workman start -d

  当你看到如下结果的时候,workman 已经启动成功了。

  Workerman[wk] start in DEBUG mode

-----------------------WORKERMAN----------------------------- Workerman version:3.5.11PHP version:7.1.11------------------------WORKERS------------------------------- user worker listen processes status root Gateway websocket://0.0.0.0:2346 1 [OK] root BusinessWorker none 1[OK] root Register text://0.0.0.0:1236 1 [OK]---------------------------------------------------------------- Press Ctrl+C to stop. Start success. onWorkerStart

 

 

<?phpnamespaceApp\Console\Commands;useGatewayWorker\BusinessWorker;useGatewayWorker\Gateway;useGatewayWorker\Register;useIlluminate\Console\Command;useWorkerman\Worker;classWorkermanCommandextendsCommand{protected$signature='workman {action} {--d}';protected$description='Start a Workerman server.';publicfunctionhandle(){global$argv;$action=$this->argument('action');$argv[0]='wk';$argv[1]=$action;$argv[2]=$this->option('d')?'-d':'';$this->start();}privatefunctionstart(){$this->startGateWay();$this->startBusinessWorker();$this->startRegister();Worker::runAll();}privatefunctionstartBusinessWorker(){$worker=newBusinessWorker();$worker->name='BusinessWorker';$worker->count=1;$worker->registerAddress='127.0.0.1:1236';$worker->eventHandler= \App\Workerman\Events::class;}privatefunctionstartGateWay(){$gateway=newGateway("websocket://0.0.0.0:2346");$gateway->name='Gateway';$gateway->count=1;$gateway->lanIp='127.0.0.1';$gateway->startPort=2300;$gateway->pingInterval=30;$gateway->pingNotResponseLimit=0;$gateway->pingData='{"type":"@heart@"}';$gateway->registerAddress='127.0.0.1:1236';}privatefunctionstartRegister(){newRegister('text://0.0.0.0:1236');}}

posted @ 2019-05-18 15:28  MoMeak10  阅读(2527)  评论(0编辑  收藏  举报