在Laravel中安装GatewayClient拓展

因为项目需要用到websocket协议进行服务端主动推送,所以选择引入GatewayWorker

运行环境

配置版本
PHP7.1.18
Laravel5.6.28
操作系统Windows Server 2012 R2

安装Gatewayworker

下载地址.
下载完成后进行解压,可以看到整个文件夹的目录结构如下所示。
在这里插入图片描述

  1. Events.php BusinessWorker 进程的实际业务处理类
    因为在Laravel中完成所有业务逻辑,GatewayWorker仅仅当做一个单向的推送通道,所以我将Events.php修改如下:
 public static function onConnect($client_id)
    {
        Gateway::sendToClient($client_id, json_encode(array(
            'type'      => 'init',
            'client_id' => $client_id
        )));
    }

   /**
    * 当客户端发来消息时触发
    * @param int $client_id 连接id
    * @param mixed $message 具体消息
    */
   public static function onMessage($client_id, $message)
   {
        // 向所有人发送 
   }
   
   /**
    * 当用户断开连接时触发
    * @param int $client_id 连接id
    */
   public static function onClose($client_id)
   {
       // 向所有人发送 
   }
  1. start_businessworker.php BusinessWorker 进程的启动文件
// bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'YourAppBusinessWorker';
// bussinessWorker进程数量
$worker->count = 4;
// 服务注册地址
$worker->registerAddress = '127.0.0.1:1238';
  1. start_gateway.php Gateway 进程的启动文件
// gateway 进程
$gateway = new Gateway("websocket://0.0.0.0:8282");
// gateway名称,status方便查看
$gateway->name = 'YourAppGateway';
// gateway进程数
$gateway->count = 4;
// 本机ip,分布式部署时使用内网ip
$gateway->lanIp = '127.0.0.1';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口 
$gateway->startPort = 2900;
// 服务注册地址
$gateway->registerAddress = '127.0.0.1:1238';
  1. tart_register.php Register 服务进程的启动文件
// register 必须是text协议
$register = new Register('text://0.0.0.0:1238');
  1. start_for_win.bat Windows 环境下 GatewayWorker 所有 Worker 进程的启动文件
  2. start.php Linux 环境下 GatewayWorker 所有 Worker 进程的启动文件

运行star_for_win.bat,可以看到如下画面
在这里插入图片描述

安装GatewayClient拓展

在Laravel根目录下运行以下命令

composer require workerman/gatewayclient

安装完成后,在需要调用GatewayClient接口的控制器里引用命名空间

use GatewayClient\Gateway;

并设置 Gateway::$registerAddress 属性,告知 GatewayClient 与哪个 GatewayWorker (集群)通讯

Gateway::$registerAddress = '127.0.0.1:1238';

现在,就可以在Laravel中调用GatewayClient接口实现各种功能了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值