tp5 workerman 服务器端 如何调用 长连接

因工作内容需求 服务器端处理完 小程序二维码后 后台页面需要实时进行更新展示

之前一直用 GatewayWorker 组件来处理后台页面长连接显示

但是不用前端页面 用后台来触发时就不行了 经过查找找到了 GatewayClient组件

关于GatewayClient

源码:

https://github.com/walkor/GatewayClient

注意:

如果GatewayClient和GatewayWorker不是在同一台服务器上,则需要先将start_gateway.php中的lanIp改成当前服务器的内网ip(如果不在一个内网可改成公网ip)。

如果GatewayClient和GatewayWorker在同一台服务器上运行,则不用做任何更改,直接按照示例使用GatewayClient即可。

通过GatewayClient发送的数据不会经过Event.php,而是直接经由Gateway进程转发给客户端。

GatewayClient无法接收客户端发来的数据。

如何加入tp5中呢

首先按照 GatewayWorker 的版本来下载对应的 GatewayClient

如何查看 GatewayWorker版本 在

如何知道GatewayWorker版本

打开GatewayWorker/Gateway.php,在Gateway类内部VERSION常量标记了当前GatewayWorker的版本,例如下面GatewayWorker版本号为2.0.2。

如果没有找到VERSION常量,说明是1.0版本。

GatewayWorker/Gateway.php

<?php
/**
 * This file is part of workerman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link http://www.workerman.net/
 * @license http://www.opensource.org/licenses/mit-license.php MIT License
 */
namespace GatewayWorker;

use Workerman\Connection\TcpConnection;

use \Workerman\Worker;
use \Workerman\Lib\Timer;
use \Workerman\Autoloader;
use \Workerman\Connection\AsyncTcpConnection;
use \GatewayWorker\Protocols\GatewayProtocol;

/**
 *
 * Gateway,基于Worker开发
 * 用于转发客户端的数据给Worker处理,以及转发Worker的数据给客户端
 *
 * @author walkor<walkor@workerman.net>
 *
 */
class Gateway extends Worker
{

    /**
     * ######版本######
     * @var string
     */
    const VERSION = '2.0.2';

知道自己的版本后 下载对应的 GatewayClient

把下载好的 GatewayClient 放在 vendor 下

在需要的类中引入 

use \GatewayClient\Gateway;
require_once '/www/wwwroot/******/vendor/GatewayClient/Gateway.php';
require_once要引入你服务器的绝对路径

调用时 只需要 

function ceshi(){

        //你设置好的 服务器IP
        Gateway::$registerAddress = '127.0.0.1:1238';
        //要给全部人员发送的消息
        Gateway::sendToAll(11111);
}

这样就可以进行简单使用了

客户端使用示例

require_once '/your/path/GatewayClient/Gateway.php';

/**
 * gatewayClient 3.0.0及以上版本加了命名空间
 * 而3.0.0以下版本不需要use GatewayClient\Gateway;
 **/
use GatewayClient\Gateway;

/**
 *====这个步骤是必须的====
 *这里填写Register服务的ip(通常是运行GatewayWorker的服务器ip)和端口
 *注意Register服务端口在start_register.php中可以找到(chat默认是1236)
 *这里假设GatewayClient和Register服务都在一台服务器上,ip填写127.0.0.1
 **/
Gateway::$registerAddress = '127.0.0.1:1236';


// 以下是调用示例,接口与GatewayWorker环境的接口一致
// 接口具体使用方法见《Lib\Gateway类提供的接口》一章
// 注意除了不支持sendToCurrentClient和closeCurrentClient方法
// 其它方法都支持
Gateway::sendToAll($data);
Gateway::sendToClient($client_id, $data);
Gateway::closeClient($client_id);
Gateway::isOnline($client_id);
Gateway::bindUid($client_id, $uid);
Gateway::isUidOnline($uid);
Gateway::getClientIdByUid($uid);
Gateway::unbindUid($client_id, $uid);
Gateway::sendToUid($uid, $data);
Gateway::joinGroup($client_id, $group);
Gateway::sendToGroup($group, $data);
Gateway::leaveGroup($client_id, $group);
Gateway::getClientCountByGroup($group);
Gateway::getClientSessionsByGroup($group);
Gateway::getAllClientCount();
Gateway::getAllClientSessions();
Gateway::setSession($client_id, $session);
Gateway::updateSession($client_id, $session);
Gateway::getSession($client_id);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值