摘要:最近一直再研究websocket,看了workerman、gateway之后,然后尝试使用TP5整合一下gatewayworker,整合过程如下:
Linux部分:
1、首先创建tp5项目,整体结构如下图
2、安装GatewayWorker:composer require workerman/gateway-worker,结构如下:
3、在application下,新建common/command文件夹,然后在command文件夹下新建Workerman.php文件
4、Workerman.php文件内容如下:
<?php
namespace app\common\command;
use app\push\controller\Events;
use GatewayWorker\BusinessWorker;
use GatewayWorker\Gateway;
use GatewayWorker\Register;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use Workerman\Worker;
/**
* 自定义命令类,启动Socket服务端
* Class Workerman
* @package app\common\command
*/
class Workerman extends Command {
protected function configure() {
$this->setName('workerman')
->addArgument('action', Argument::OPTIONAL, "action start|stop|restart")
->addArgument('type', Argument::OPTIONAL, "d -d")
->setDescription('workerman chat');
}
protected function execute(Input $input,Output $output) {
global $argv;
$action = trim($input->getArgument('action'));
$type = trim($input->getArgument('type')) ? '-d' : '';
$argv[0] = 'chat';
$argv[1] = $action;
$argv[2] = $type ? '-d' : '';
$this->start();
}
private function start() {
$this->startGateWay();
$this->startBusinessWorker();