zoukankan      html  css  js  c++  java
  • fastadmin(tp5)搭建gateway

    先把composer调成国内镜像:

    composer config -g repo.packagist composer https://packagist.phpcomposer.com

    不更换也行,但是很慢,建议更换

    进项目根目录(不是public)

    composer require workerman/gateway-worker

    装完后,在public里新建一个php文件:chat.php

    <?php
    
    // [ 应用入口文件 ]
    // 定义应用目录
    define('APP_PATH', __DIR__ . '/../application/');
    
    //此处为绑定的模块
    define('BIND_MODULE','push/Start');
    
    // 加载框架引导文件
    require __DIR__ . '/../thinkphp/start.php';

     然后在 application 里创建一个 文件夹:push

     在push下再创建一个controller文件夹

     再创建两个文件:Start.php、Events.php

      

     Start.php:

    <?php
    
    namespace apppushcontroller;
    
    use WorkermanWorker;
    use GatewayWorkerRegister;
    use GatewayWorkerBusinessWorker;
    use GatewayWorkerGateway;
    
    class Start
    {
        public function __construct()
        {
            //定义端口
            $port = 2500;
            // 初始化register
            new Register('text://0.0.0.0:' . $port);
    
            //初始化 bussinessWorker 进程
            $worker = new BusinessWorker();
            $worker->name = 'chatWorker';  //进程名
            $worker->count = 4;  //进程数
            $worker->registerAddress = '127.0.0.1:' . $port; 
    
            // 设置处理业务的类,此处制定Events的命名空间
            $worker->eventHandler = 'apppushcontrollerEvents';
            // 初始化 gateway 进程
            $gateway = new Gateway("websocket://0.0.0.0:2501");
            $gateway->name = 'chatGateway'; //Gateway进程名
            $gateway->count =  4;  //Gateway进程数
            $gateway->lanIp = '127.0.0.1';
            $gateway->startPort = 2000;  //开始端口
    //        $gateway->pingInterval = 60;
    //        $gateway->pingNotResponseLimit = 5;
    //        $gateway->pingData = 'pong';
            $gateway->registerAddress = '127.0.0.1:' . $port;
    
            // 运行所有Worker;
            Worker::runAll();
        }
    }

    Events.php

    <?php
    
    namespace apppushcontroller;
    
    use WorkermanWorker;
    use appcommoncontrollerFrontend;
    use GatewayWorkerLibGateway;class Events extends Frontend
    {
    
        /**
         * 有消息时
         * @param integer $client_id 连接的客户端
         * @param mixed $message
         * @return void
         */
        public static function onMessage($client_id, $message)
        {
    
            //$uid = 1;
            //Gateway::bindUid($client_id, $uid);  //与用户id绑定
        
            dump($message); //在sell控制台可查看到打印的内容
            //把接收到的消息原样返回
            Gateway::sendToClient($client_id, $message);
    
        
    
        }
    
    
        /**
         * 当用户连接时触发的方法
         * @param integer $client_id 连接的客户端
         * @return void
         */
        public static function onConnect($client_id)
        {
            echo '连接成功' . PHP_EOL;
            Gateway::sendToClient($client_id, '连接成功');
        }
    
        /**
         * 当用户断开连接时触发的方法
         * @param integer $client_id 断开连接的客户端
         * @return void
         */
        public static function onClose($client_id)
        {
            echo '断开连接' . PHP_EOL;
            Gateway::sendToClient($client_id, "断开连接");
    
    //        Gateway::sendToAll("client[$client_id] logout
    ");
        }
    
        /**
         * 当进程启动时
         * @param integer $businessWorker 进程实例
         */
        public static function onWorkerStart($businessWorker)
        {
            echo '进程启动,进程id:' . $businessWorker->id . PHP_EOL;
    
        }
    
        /**
         * 当进程关闭时
         * @param integer $businessWorker 进程实例
         */
        public static function onWorkerStop($businessWorker)
        {
            echo '进程关闭,进程id:' . $businessWorker->id . PHP_EOL;
    
        }
    
    
    }

    做完这些,便可以去sell控制台输入命令运行:

    cd 到 public 目录下,然后:

    php ./chat.php start

    已启动完毕,可以使用在线的websocket测试工具试试,连的时候,是连接端口为:2501 这个。

    报错信息都是在这个sell界面查看

  • 相关阅读:
    Azure ARM (2) 概览
    Azure SQL Database (22) 迁移部分数据到Azure Stretch Database
    Azure SQL Database (21) 将整张表都迁移到Azure Stretch Database里
    Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor
    开源日志系统比较:scribe、chukwa、kafka、flume
    大型互联网架构概述
    可扩展Web架构与分布式系统
    linux TOP命令各参数详解【转载】
    MongoDB社区版本和企业版本差别
    基于Geoserver的业务分析(笔记)
  • 原文地址:https://www.cnblogs.com/j-jian/p/13234911.html
Copyright © 2011-2022 走看看