关于GatewayClient 介绍和使用

GatewayClient

## 源码

https://github.com/walkor/GatewayClient

根据GatewayWorker版本,选择合适的GatewayClient版本,请参照【如何知道使用的GatewayWorker版本号?

 

 

注意:GatewayClient3.0.0以后支持composer并加了命名空间GatewayClient 

 

注意:

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

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

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

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

 

## 安装(composer安装适用于3.0.0及以上版本)

composer require workerman/gatewayclient

## 客户端使用示例

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 *注意:ip不能是0.0.0.0 **/ 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);

转载于:https://www.cnblogs.com/feixiablog/p/9264412.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GatewayWorker 是一款基于PHP语言开发的高性能的TCP长连接框架,可以通过它来实现高并发的网络应用。而ThinkPHP是一款流行的PHP开发框架,提供了丰富的功能,包括MVC架构、ORM、模板引擎等等。 下面介绍如何使用ThinkPHP搭建GatewayWorker TCP客户端与服务端。 ### 环境准备 - PHP 5.3以上版本(推荐PHP7) - GatewayWorker 3.0以上版本 - ThinkPHP 5.0以上版本 ### 客户端实现 在ThinkPHP的控制器中,我们可以使用GatewayClient类来实现对GatewayWorker服务端的连接和通信。以下是一个简单的示例: ```php use GatewayClient\Gateway; class IndexController extends \think\Controller { public function index() { Gateway::$registerAddress = '127.0.0.1:1238'; $client_id = Gateway::getClientIdByUid(1); Gateway::sendToClient($client_id, 'hello world'); } } ``` 在上面的代码中,我们首先设置了GatewayWorker服务端的注册地址,然后通过getClientIdByUid方法来获取客户端的连接ID,最后通过sendToClient方法向客户端发送消息。 ### 服务端实现 在ThinkPHP的控制器中,我们可以使用GatewayWorker的Gateway类来实现TCP服务端的搭建和消息处理。以下是一个简单的示例: ```php use GatewayWorker\Gateway; class Test extends \think\Controller { public function index() { $gateway = new Gateway("websocket://0.0.0.0:7272"); $gateway->name = 'MyWebsocketGateway'; $gateway->count = 4; $gateway->onConnect = function($connection){ echo "new client connected\n"; }; $gateway->onMessage = function($connection, $data){ $connection->send('hello ' . $data); }; $gateway->onClose = function($connection){ echo "client closed\n"; }; $gateway->start(); } } ``` 在上面的代码中,我们首先创建了一个Gateway实例,并设置了监听地址和端口、名称、进程数等参数。然后我们定义了三个回调函数:onConnect、onMessage和onClose,分别处理客户端连接、消息接收和连接关闭的事件。最后我们调用start方法启动服务端。 ### 总结 本文介绍了如何使用ThinkPHP搭建GatewayWorker TCP客户端与服务端。通过这种方式,我们可以很方便地实现高并发的网络应用。当然,GatewayWorker还提供了很多其他的功能,例如支持WebSocket协议、支持分布式部署等等。如果您想深入了解GatewayWorker的使用,可以参考官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值