问题描述 目前用Gatewayworker搭建了一套集群的消息推送系统,客户端只需要接受消息,发现SSE更合适,想问是否有基于GatewayWorker的SSE案例或实现方式? 为此你搜索到了哪些方案及不适用的原因 搜遍文档和问答,貌似只有Workerman支持? GatewayWorker文档中也说明了不支持监听http,但SSE是基于http,如果换成Workerman来实现,分布式集群又不好实现和管理,整体架构...
使用的GatewayWorker框架, 目前碰到的情况是BusinessWorker进程跑一段时间后,内存一直在上涨,得定期重启BusinessWorker进程, 客户端使用WebSocket长连接,目前客户端在2500左右,基本上7 x 24时在线(硬件), Worker进程情况如图1: Events没有复杂的逻辑,基本上只是在维持心跳: class Events { public static fu...
由于前期架构设计问题导致服务器资源浪费,现在需要缩减资源, 使用的GatewayWorker框架,分部署集群部署,但只有一个Register, 目前需要将Register从A服务器迁移至B服务器,又不能中断在线的客户端, 是否有合适的方式平滑重启相关服务又不影响在线的客户端? 暂时能想到的就是新起一个Register和新的Gateway集群,让客户端转移至新的Gateway, 同时业务逻辑需要做很大调整,下发消息都需...
1,Gateway、Worker、Register都在局域网中; 2,局域网中有台路由与外界互通; 3,客户端与客户项目均在外网,需要与局域网的服务链接; 因为项目所处的网络环境不是直接在公网上,导致外网Api接口无法将客户端获取的client_id解析成Gateway所在的公网地址,也尝试将gateway的lan_ip改为公网地址,但公网IP并不属于gateway所在服务器,也无法启动; 所有外网至局域网的...
需要在建立连接时根据client_id做一些业务处理,跟着源码,也打印了整个connection,没发现相关数据,在Gateway类中貌似是没办法获取client_id的?...
如题,Register、Worker、Gateway都分别部署了,客户端数不超过4000, 在没有修改内核的情况下,通过netastat 查看 Worker服务器,连接数达到了8万多,大量的TIME_WAIT链接, Worker没有做复杂的逻辑,只是实现了心跳包,以及通过GatewayClient客户端,往其它的业务发送数据, 请问下,大量的TIME_WAIT,有什么排查的方法或诱因吗?...
目前发现有几个环境的event-loop不一样,请问下有什么区别吗? 一个是:event, 一个是 \Workerman\Events\Event 另一个是:\Workerman\Events\React\ExtEventLoop 还有一个是:select 这个就不说了, 确实其中有一台装了ReactPHP扩展,有什么区别吗?...
解决了这个问题后 http://wenda.workerman.net/?/question/2054,这几天系统一直有个异常,项目中会往多个ip发送消息, ip1: 111.111.111.111:1200 ip2: 222.222.222.222:1300, 神奇的是,报的异常是: ErrorException: stream_socket_client(): unable to connect to tcp:/...
目前有多个使用Gateway的项目,这几个项目都是通过自己开发的中间件来互相转发消息,今晚发现,使用GatewatClient时,在同一个中间件同时发送消息给多个项目时(也就是有多个注册中心地址$registerAddress),始终只能发送到第一个$registerAddress,大致看了下源码,貌似是 getAllGatewayAddressesFromRegister 这个方法在作怪?有个临时的静态变量 $ad...
客户端与Gateway进行websocket长连接的情况下, 设置了pingInterval=30,pingNotResponseLimit=0, 这种情况下,客户端会稳定连接着, 但如果设置了pingNotResponseLimit > 0,等于1至等于5都试过, 就会在 30 * pingNotResponseLimit时断开链接; 防火墙是关着的,所以不会受防火墙的影响,本以为可能是服务器环境问题, 后来...
做了集群,Gateway和Register是在同一台服务器上,BuinessWorker单独一台服务器,都是局域网, Gateway起了2个进程, BuinessWorker起了8个进程, 我们的客户端数量是可数的,也就2千不到,但启动服务后,status 中的 connections一直在慢慢增长, 于是我在Gateway服务中onWebSocketConnect写了日志看是否是客户端的问题导致的重复连接,发现并没...
php start.php start php start.php start -d 在Events.php的onConnect也有内容输出,再者故意弄了点异常报错,也没有产生日志,请问是什么原因?...
1,如题,测试时,只有一个客户端链接,但是connections不止1个,这是为什么? 2,客户端多次连接时,会有多个connections,假设是10个client_id,后台Gateway::closeClient($client_id); 关闭这些client_id后,连接数connections还是不变,这是为什么?...
/Applications /Applications/App1/start_app.php /Applications/App2/start_app.php ... 启动和关闭的操作都在根目录下的start.php,如何细化到每个App?...
这是我的配置: 'count' => 10, //进程数 'startPort' => 2800, //开始端口 'pingInterval' => 60, //心跳包间隔时间 'pingNotResponseLimit' => 3, 'pingData' => '{"action":"ping"...
本来有个业务放在Applications/App1下, 现在要做个消息队列,单独开了个GatewayWorker,为App2, 但客户端连接的是App1的Gateway, 在App2中处理消息队列时,如何发消息给App1中的某个客户端?...