开发文档
王明旭 upravil tuto stránku před 5 roky

未来bike-中继服务端-开发文档

项目简介

中继端:主要提供车(中控)对接的socket服务,包含登录,位置,控制车辆等接口。

开发语言: php

技术方案:主要采用 Workerman3.0 基础框架,并基于GatewayWorker做的二次开发。

依赖环境:

  • php7.2 (需要支持redis,mongodb扩展);需要放开PHP函数(pcntl_signal,shell_exec,pcntl_alarm,pcntl_signal_dispatch,pcntl_fork,pcntl_wait,pcntl_signal,putenv)
  • redis-v5.0
  • mongdb-v4.0
  • mysql5.7
  • composer1.8.5

服务对外开放端口:8282(tcp)

注意:数据库源文件和redis初始化脚本见后台端

项目详情

项目目录文件简介

  • Applications //应用目录
    • FileMonitor//代码热更新
    • Handlers // 代码块
      • BatteryHandler.php //电池电压转电量代码块
      • BikeStatusInfoSyncHandler.php//ridis车状态同步代码块
      • ConvertHandler.php//坐标位置计算代码块
      • Crc16Handler.php//crc16校检代码块
      • ExceptionTrait.php//异常处理代码块
      • MapHandler.php//地图坐标系转换代码块
      • ToolsHandler.php//自定义工具函数代码块
    • Maps
      • BikeMap.php//车状态类型字段映射
      • BoxActiveUpEventMap.php//中控主动上报类型映射
      • CmdMap.php//中控控制指令
      • VideoMap.php//语音指令
      • WarningLogMap.php//警告类型(自定义)
      • WarningMap.php//警告类型
    • Models
      • AreaTraitModel.php//area操作模型
      • BatteryTraitModel.php//关于电池的操作(电压转电量)
      • BikeTraitModel.php//bike模型
      • WarningLogTraitModel.php//报警模型
    • Servers
      • BaseServer.php //服务基础类
      • BatteryServer.php//解析BMS报文
      • BikeControl.php//车辆控制类
      • BoxActiveReportingServer.php//解析中控主动上报事件报文
      • BoxPlayVoiceServer.php//解析播放语音报文
      • BoxSelectCmdServer.php//解析查询配置报文
      • BoxSettingServer.php//解析配置中控报文
      • BoxStatusChangeServer.php//解析中控状态改变报文
      • BoxSyncServer.php//解析中控同步报文
      • BoxUpgradeServer.php//解析中控升级报文
      • HeartBeatServer.php//解析心跳报文
      • LocationServer.php//解析位置报文
      • LoginServer.php//解析登录报文
      • MsgForwardServer.php//解析短信转发报文(暂时没有用)
    • MsgUpServer,php//解析短信上报报文(暂时没有用)
      • NewBikeReportingServer.php//(咱不是没有用)
      • RemoteCmdServer.php//解析远程命令报文
      • ResponseServer.php//报文响应类
      • WarningServer.php//解析警告报文
    • YourApp
      • Events.php//接受数据主入口
      • start_businessworker.php//处理数据服务
      • start_gateway.php//接受终端数据服务
      • start_register.php//内部服务通信服务
  • vendor//依赖包
  • composer.json//项目依赖包配置文件
  • config.php//配置文件
  • start.php//服务启动脚本(linux)

项目配置文件

配置文件为根目录下的 config.php,详情如下所示:

const Config = [
    // 是否开启调试(生成日志文件)
    'debug' => true,
    // 分布式 是否允许Register服务(分布式部署只留只开启一个服务,其他从服务器关闭)
    'is_register_run' => true,
    // 分布式 内网主机ip
    'gateway_lanIp' => '127.0.0.1',
    // 分布式 Register服务地址(上部配置开启服务的配置服务器地址)[端口号1238]
    'registerAddress' => '127.0.0.1:1238',
  	//数据库配置文件
    'db' => [
        'host' => 'node2',
        'port' => 3306,
        'user' => 'weilaibike',
        'password' => '***',
        'db_name' => 'weilaibike'
    ],
  	//redis配置文件
    'redis' => [
        'host' => 'node3',
        'port' => 6379
    ],
  	//mongodb配置文件
    'mongodb' => 'mongodb://node3/weilaibike',
  	//
    'gateway' => [
        'is_run' => true,
        'count' => 4,//一般为cpu核数
        'pingInterval' => 130,//心跳包间隔多少判断为离线
        'pingNotResponseLimit' => 1,//间隔多少个判断为离线
    ],
    'business' => [
        'is_run' => true,
        'count' => 4 //cpu核数的1-3倍
    ]
];

服务器启动准备工作

  • 安装composer,并在跟目录下安装项目依赖包,命令如下

    $ composer install
    

项目启动及服务命令

  • 启动

    • 启动命令(以debug(调试)方式启动)

      $ php start.php start 
      
    • 以daemon(守护进程)方式启动

      $ php start.php start -d
      
  • 停止

    $ php start.php stop
    
  • 重启

    $ php start.php restart
    
  • 平滑重启

    $ php start.php reload
    
  • 查看状态

    $ php start.php status