gateway workers 例子使用 连上后了,客户端没发消息后就断了
但是没触发到onclose(),客户端没收到断开后反馈的消息
这样是正常的吗?
客户端测试是:telnet xx.xx.xx.xx 10069
stay_gateway.php 如下
use \Workerman\Worker;
use \Workerman\WebServer;
use \GatewayWorker\Gateway;
use \GatewayWorker\BusinessWorker;
use \Workerman\Autoloader;
// 自动加载类
require_once __DIR__ . '/../../vendor/autoload.php';
$gateway = new Gateway("text://0.0.0.0:10069");
// gateway名称,status方便查看
$gateway->name = 'cdbAppGateway';
// 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';
if(!defined('GLOBAL_START'))
{
Worker::runAll();
}
onClose里都断开了,Gateway::sendToClient 已经收不到了
请问如何在业务系统里 发数据给客户端
先保存clientid
在业务系统里的文件里:
use \GatewayWorker\Lib\Gateway;
Gateway::sendToClient
这样是否可行?
还是得设置路由,另外文件处理?
参考手册 http://doc2.workerman.net/326149
你好。请问服务端可以不自动关闭吗?是默认有到了时间自动关闭的吗?
我这里用 客户端:telnet xx.xx.xx.xx 10069 测试了下,但是过了一个时间他关掉了,数据发送给服务端没反馈
根据你提供的信息看服务端并不会主动关闭链接。
应该是链接长时间不通讯被路由节点或者防火墙给断掉了,需要加心跳维持链接,防止链接由于长时间不通讯而被路由节点/防火墙断开。
心跳设置http://doc2.workerman.net/326139
请问,我在业务系统里使用了GatewayClient, 我这个端口和IP设置对了吗?
[attach]671[/attach]
现在start_register.php:
[attach]672[/attach]
start_gateway.php:
[attach]673[/attach]
GatewayClient和GatewayWorker如果都在同一台服务器是对的
你好。请问下就是在使用这个GatewayClient的时候,如果业务系统里保存了$client_id,
还需要先绑定uid和$client_id,再getClientIdByUid,sendToUid的方式发送吗?
直接发送 Gateway::sendToClient($client_id, $data); 是不是也是可以的?
用法与GatewayWorker的接口用法相同。
保存了$client_id 直接Gateway::sendToClient($client_id, $msg);就发送过去了
谢谢你
walkor大神,现在是这样问题:
gateway 和businessworker都是4个进程
客户端每一分钟发一个心跳,客户端达到300个时,就不能在onMessage里用Gateway::sendToClient发数据,我是在onMessage里发数据和保存数据到数据库
但是talent 模拟onConnect是走的,都在同一台服务器
服务器 内存利用率为80%,cpu4%