上篇介绍了workman实现websocket功能(链接:https://blog.csdn.net/weixin_38155824/article/details/128952037)
后传:解决workman部署到Linux环境无法启动和连接的问题(https://blog.csdn.net/weixin_38155824/article/details/129004050)
这篇就介绍如何在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,路径要写对)文章来源:https://www.toymoban.com/news/detail-607986.html
<?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
输出:
文章来源地址https://www.toymoban.com/news/detail-607986.html
到了这里,关于thinkPHP6接入workman的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!