thinkPHP6接入workman
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
上篇介绍了workman实现websocket功能链接https://blog.csdn.net/weixin_38155824/article/details/128952037
这篇就介绍如何在thinkPHP6项目中接入workman。
利用TP6的自定义命令开启websocket服务
查看TP6手册命令行=>自定义命令
第一步执行以下命令就会会生成一个app\command\Chat命令行指令类.
php think make:command Chat startChat
第二步配置config/console.php文件
<?php
return [
'commands' => [
'chat' => 'app\command\Chat',
]
];
第三步测试-命令帮助-命令行下运行
php think
输出
执行
php think chat
自定义命令搞定后就可以引入workman了
在项目根目录下通过comoser安装workman
composer require workerman/workerman
然后将上一篇的workman开启wetsocket服务的代码复制到新创建的自定义命令类Chat.php中
划重点要引入vendor目录下的autoload.php路径要写对
划重点要引入vendor目录下的autoload.php路径要写对
划重点要引入vendor目录下的autoload.php路径要写对
<?php
declare (strict_types = 1);
namespace app\command;
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;
use Workerman\Connection\TcpConnection;
require __DIR__ . '/../../vendor/autoload.php';
class Chat extends Command
{
protected function configure()
{
// 指令配置
$this->setName('startChat')
->setDescription('the startChat command');
}
protected function execute(Input $input, Output $output)
{
// 指令输出
$output->writeln('startChat');
//启动workman-websocket服务
// 注意这里与上个例子不同使用的是websocket协议
$ws_worker = new Worker("websocket://0.0.0.0:2000");
// 启动4个进程对外提供服务
$ws_worker->count = 4;
// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{
//在控制台打印客户端发送过来的消息
var_dump($data);
var_export($data);
// 向客户端发送hello $data
$connection->send('hello ' . $data);
};
// 运行worker
Worker::runAll();
}
}
然后再执行一下命令php think chat
输出