您好,欢迎来到互利cms 官方网站-内容管理系统,让你体验不一样的建站方式,更简单,更安全,更灵活
  • 登陆-注册
  • 使用手册
  • 常见问题
  • 全国服务热线:18173153117

    think5.1x使用心得教程->thinkphp 5.1使用workerman
  • thinkphp 5.1使用workerman
  • 浏览次数:164 作者:旭日东升 日期:2019-07-29 09:28:29
  • 1.安装 Workerman
    安装GatewayWorker内核文件(不包含start_gateway.php start_businessworker.php等启动入口文件),直接上composer
    1. composer require workerman/gateway-worker
    复制代码
    2.创建 Workerman 启动文件
    创建一个自定义命令类文件来启动 Socket 服务端,新建
    1. application/common/command/Workerman.php
    复制代码
    1. <?php
    2. /**
    3.  * User: Tegic
    4.  * Date: 2018/6/13
    5.  * Time: 09:36
    6.  */
    7. namespace app\common\command;
    8. use app\workerman\Events;
    9. use GatewayWorker\BusinessWorker;
    10. use GatewayWorker\Gateway;
    11. use GatewayWorker\Register;
    12. use think\console\Command;
    13. use think\console\Input;
    14. use think\console\input\Argument;
    15. use think\console\input\Option;
    16. use think\console\Output;
    17. use Workerman\Worker;
    18. class Workerman extends Command
    19. {
    20.     protected function configure()
    21.     {
    22.         $this->setName('workerman')
    23.             ->addArgument('action', Argument::OPTIONAL, "action  start|stop|restart")
    24.             ->addArgument('type', Argument::OPTIONAL, "d -d")
    25.             ->setDescription('workerman chat');
    26.     }
    27.     
    28.     protected function execute(Input $input, Output $output)
    29.     {
    30.         global $argv;
    31.         $action = trim($input->getArgument('action'));
    32.         $type   = trim($input->getArgument('type')) ? '-d' : '';
    33.         
    34.         $argv[0] = 'chat';
    35.         $argv[1] = $action;
    36.         $argv[2] = $type ? '-d' : '';
    37.         $this->start();
    38.     }
    39.     private function start()
    40.     {
    41.         $this->startGateWay();
    42.         $this->startBusinessWorker();
    43.         $this->startRegister();
    44.         Worker::runAll();
    45.     }
    46.     
    47.     private function startBusinessWorker()
    48.     {
    49.         $worker                  = new BusinessWorker();
    50.         $worker->name            = 'BusinessWorker';
    51.         $worker->count           = 1;
    52.         $worker->registerAddress = '127.0.0.1:1236';
    53.         $worker->eventHandler    = Events::class;
    54.     }
    55.     
    56.     private function startGateWay()
    57.     {
    58.         $gateway = new Gateway("websocket://0.0.0.0:8282");
    59.         $gateway->name                 = 'Gateway';
    60.         $gateway->count                = 1;
    61.         $gateway->lanIp                = '127.0.0.1';
    62.         $gateway->startPort            = 2300;
    63.         $gateway->pingInterval         = 30;
    64.         $gateway->pingNotResponseLimit = 0;
    65.         $gateway->pingData             = '{"type":"@heart@"}';
    66.         $gateway->registerAddress      = '127.0.0.1:1236';
    67.     }
    68.     
    69.     private function startRegister()
    70.     {
    71.         new Register('text://0.0.0.0:1236');
    72.     }
    73. }
    复制代码
    配置 application/command.php 文件
    1. return [
    2.     'app\common\command\Workerman',
    3. ];
    复制代码
    3.创建事件监听文件
    创建 application/workerman/Events.php 文件来监听处理 workerman 的各种事件。
    1. <?php
    2. /**
    3.  * User: Tegic
    4.  * Date: 2018/6/13
    5.  * Time: 09:47
    6.  */
    7. namespace app\workerman;
    8. use GatewayWorker\Lib\Gateway;
    9. class Events
    10. {
    11.     
    12.      public static function onWorkerStart($businessWorker)
    13.     {
    14.     }
    15.     public static function onConnect($client_id)
    16.     {
    17.     }
    18.     public static function onWebSocketConnect($client_id, $data)
    19.     {
    20.     }
    21.     public static function onMessage($client_id, $message)
    22.     {
    23.     }
    24.     public static function onClose($client_id)
    25.     {
    26.     }
    27. }
  • 上一篇:workerman设置开机启动 centos7.6 下一篇:没有更多章节了?
  • 站内地图

    Copyright 2018-2028 hlcms. All Rights Reserved. 湘ICP备13008873号-1