ThinkPHP5使用workerman的GatewayWorker框架实现websocket即时通讯

本文介绍了如何安装和使用workerman及GatewayWorker。首先,通过composer更新或安装指定版本的composer,然后在项目根目录中安装workerman和GatewayWorker。接着,使用提供的示例代码进行配置,调整网关端口,并学习相关命令如启动、停止和检查WorkerMan。最后,重点讲解了GatewayWorker如何处理客户端的消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装插件

以下操作需要登录宝塔终端执行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目录,官方提供的代码很简洁
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修改成其他的端口号。
start_gateway.php文件代码

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");
   }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值