文章目录
安装插件
以下操作需要登录宝塔终端执行linux命令
查询composer版本
composer -v
如果需要对应版本的composer,可以使用命令
composer self-update --1
或者对应版本号
composer self-update 1.10.24
进入项目根目录安装workerman
composer require topthink/think-worker
安装GatewayWorker
composer require workerman/gateway-worker
使用workerman官方提供的示例
GatewayWorker示例下载地址:http://www.workerman.net/download/GatewayWorker.zip
解压下载的压缩包文件,进入到GatewayWorker目录,官方提供的代码很简洁
之前我们已经安装过对应的扩展了,所以vendor目录的内容不需要了。把start.php和start_for_win.bat放到我们的项目根目录里,用于启动GatewayWorker。把GatewayWorker\Applications\YourApp整个目录(包括里面的文件),上传到我们项目的application目录下,可以修改YourApp目录名(记得也要修改start_for_win.bat里的目录名)
WorkerMan相关命令
Linux用户可以运行以下脚本检查本地环境是否满足WorkerMan要求
curl -Ss https://www.workerman.net/check | php
以下操作需要进入项目根目录,然后执行相应的Linux命令
# 以debug(调试)方式启动
php start.php start
# 以daemon(守护进程)方式启动
php start.php start -d
# 停止
php start.php stop
# 重启
php start.php restart
# 查看状态
php start.php status
网关端口
GatewayWorker框架默认的网关端口是:8282,记得在宝塔安全里放行,如果想修改成其他端口,请打开start_gateway.php文件,将里面的8282修改成其他的端口号。
GatewayWorker接收和发送消息
Events.php文件的onMessage()方法,表示的是客户端发来消息时触发
<?php
use \GatewayWorker\Lib\Gateway;
use app\socket\Controller\AppServer;
/**
* 主逻辑
* 主要是处理 onConnect onMessage onClose 三个方法
* onConnect 和 onClose 如果不需要可以不用实现并删除
*/
class Events
{
/**
* 当客户端发来消息时触发
* @param int $client_id 连接id
* @param mixed $message 具体消息
*/
public static function onMessage($client_id, $message){
if($message=="beat"){
printLog("socket心跳检测,连接IP:".$client_id->getRemoteIp());
}else{
//我在socket\Controller目录下创建了一个AppServer文件,用于处理一些特定业务
$result=AppServer::query($message);
// 向当前client_id发送数据
Gateway::sendToClient($client_id, $result);
}
// 向所有人发送
//Gateway::sendToAll("$client_id said $message\r\n");
}
}