Gateway

Gateway

Gateway Worker进程内存不断上涨

提问damao 回复了问题 • 3 人关注 • 2 个回复 • 152 次浏览 • 2019-08-30 10:42 • 来自相关话题

GatewayWorker集群支持用户信息共享吗

提问blogdaren 回复了问题 • 2 人关注 • 1 个回复 • 131 次浏览 • 2019-08-02 11:47 • 来自相关话题

gateway黑客会不会模拟和服务器的连接导致资源耗尽?

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 170 次浏览 • 2019-07-22 11:10 • 来自相关话题

群ID与用户ID

提问blogdaren 回复了问题 • 2 人关注 • 1 个回复 • 104 次浏览 • 2019-07-17 23:23 • 来自相关话题

消息列表问题

提问blogdaren 回复了问题 • 2 人关注 • 1 个回复 • 127 次浏览 • 2019-07-17 23:21 • 来自相关话题

PHP7支持多线程了,那么gatewayworker是多线程吗?

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 270 次浏览 • 2019-07-15 12:13 • 来自相关话题

客户端连接正常,但gateway连接数异常,定时有1-2个连接波动

提问walkor 回复了问题 • 2 人关注 • 3 个回复 • 190 次浏览 • 2019-07-12 09:24 • 来自相关话题

GatewayWorker搭建分布式,$gateway->lanIp使用公网ip,启动报错

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 210 次浏览 • 2019-06-29 20:27 • 来自相关话题

在GatewayWoker使用tcp协议,在onMessage里怎么调用外部的http服务接口,实现http请求,有知道的么

提问shasha 回复了问题 • 3 人关注 • 3 个回复 • 425 次浏览 • 2019-06-26 14:35 • 来自相关话题

@walkor 您的一对一视频聊天 为何第二个人连接服务,会想服务发起多个publish。有是二十几次,而且次数不一致。

提问walkor 回复了问题 • 2 人关注 • 5 个回复 • 348 次浏览 • 2019-04-24 17:42 • 来自相关话题

关于批量操作全部session 以及批量操作某个群组session问题

提问damao 回复了问题 • 2 人关注 • 1 个回复 • 343 次浏览 • 2019-04-04 15:04 • 来自相关话题

gateway进程CPU占用99%,无法正常工作

提问guonan89 回复了问题 • 3 人关注 • 3 个回复 • 656 次浏览 • 2019-04-03 16:02 • 来自相关话题

特殊网络环境下部署Gateway无法启动

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 374 次浏览 • 2019-03-25 21:22 • 来自相关话题

gatewayWorker 能实现向群组group发一条只对群内某个用户可见的消息吗

提问keytehu 回复了问题 • 3 人关注 • 2 个回复 • 549 次浏览 • 2019-02-24 09:32 • 来自相关话题

GatewayClient调用失败

提问chaogel 回复了问题 • 6 人关注 • 11 个回复 • 4521 次浏览 • 2018-12-19 15:37 • 来自相关话题

gateway进程连接分配不平衡

提问blogdaren 回复了问题 • 3 人关注 • 1 个回复 • 533 次浏览 • 2018-12-05 20:24 • 来自相关话题

Gateway中怎么把组跟uid绑定?

回复

提问WFD 发起了问题 • 1 人关注 • 0 个回复 • 486 次浏览 • 2018-11-21 16:04 • 来自相关话题

基于workerman框架的Gateway/Worker配合第三方框架下如何做websocket集群负载?

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 1819 次浏览 • 2018-11-12 16:12 • 来自相关话题

用workerman和layim做了个网站聊天插件 webim-plugin

案例479820787 发表了文章 • 0 个评论 • 1046 次浏览 • 2018-11-06 15:00 • 来自相关话题

用workerman - gatewayworker 和layim做了个网站聊天插件,官网登录后右下角就会弹出聊天面板,含有手机端和PC端,含有完整的右键菜单功能。欢迎大家访问查看。 官网地址:https://www.implugin.cn ...查看全部
用workerman - gatewayworker 和layim做了个网站聊天插件,官网登录后右下角就会弹出聊天面板,含有手机端和PC端,含有完整的右键菜单功能。欢迎大家访问查看。
官网地址:https://www.implugin.cn
展示效果:

EA87D294-2317-47DE-A0AC-8ED9FDD11E0A.png

 

gateway框架中的Events中onMessage()中如何获取客户端ip?

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 505 次浏览 • 2018-10-25 17:43 • 来自相关话题

急 thinkphp 使用gatewayclient 无法连接服务器

提问walkor 回复了问题 • 4 人关注 • 6 个回复 • 1345 次浏览 • 2018-08-29 14:23 • 来自相关话题

GatewayWorker 中如何 给作为客户端的AsyncTcpConnection 发送信息

回复

提问tufei 回复了问题 • 1 人关注 • 1 个回复 • 627 次浏览 • 2018-08-08 10:33 • 来自相关话题

session设置和获取的bug,如果session数组中存在一个二维数组 用updateSession函数对本链接更新那个二维数组会有bug

提问walkor 回复了问题 • 3 人关注 • 1 个回复 • 689 次浏览 • 2018-08-03 11:04 • 来自相关话题

同一个用户登录不同设备,如何区分是移动端还是手机端

提问wesley_li 回复了问题 • 2 人关注 • 2 个回复 • 1927 次浏览 • 2018-07-17 10:54 • 来自相关话题

gateway总是在发送数据给客户端后tcp状态位发送FIN断开连接。

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 756 次浏览 • 2018-06-19 16:33 • 来自相关话题

gatewayworker 有时候不进入worker

提问six 回复了问题 • 2 人关注 • 1 个回复 • 591 次浏览 • 2018-06-11 10:22 • 来自相关话题

GateWay怎么使用证书。,用的text协议

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 789 次浏览 • 2018-06-04 04:33 • 来自相关话题

按照文档分离mvc层写逻辑出现stream_socket_sendto(): Զ�����ǿ�ȹر��һ�����е���ӡ�

提问bianchao1 回复了问题 • 5 人关注 • 5 个回复 • 1840 次浏览 • 2018-05-29 15:32 • 来自相关话题

stream_socket_sendto(): Զ�����ǿ�ȹر��һ�����е���ӡ�

提问bianchao1 回复了问题 • 6 人关注 • 6 个回复 • 1608 次浏览 • 2018-05-29 15:19 • 来自相关话题

Apache 反向代理 GatewayWorker 失败

提问maq 回复了问题 • 2 人关注 • 2 个回复 • 670 次浏览 • 2018-05-16 18:37 • 来自相关话题

GatewayWorker中client_id和uid之间的关系

提问walkor 回复了问题 • 5 人关注 • 4 个回复 • 3754 次浏览 • 2018-05-07 10:18 • 来自相关话题

心跳包设置pingNotResponseLimit后,客户端会断开

提问walkor 回复了问题 • 6 人关注 • 4 个回复 • 2549 次浏览 • 2018-04-27 14:38 • 来自相关话题

20多个终端连接服务器后,服务器会出现延迟,终端断开后还会继续接收数据

提问six 回复了问题 • 2 人关注 • 1 个回复 • 946 次浏览 • 2018-04-24 18:58 • 来自相关话题

服务器通过tcp长连接接收数据

提问zhengweipx 回复了问题 • 2 人关注 • 2 个回复 • 1680 次浏览 • 2018-04-24 14:15 • 来自相关话题

start_gateway.php里可以获取client_id吗?

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 855 次浏览 • 2018-04-13 13:58 • 来自相关话题

如何在onWebSocketConnect回调中,获取client_id?

回复

提问JoeZing 回复了问题 • 2 人关注 • 4 个回复 • 2158 次浏览 • 2018-04-12 14:48 • 来自相关话题

分布式问题求助

提问walkor 回复了问题 • 3 人关注 • 2 个回复 • 731 次浏览 • 2018-04-07 14:48 • 来自相关话题

gateway,无法查看status,显示not run。

回复

提问banice 回复了问题 • 1 人关注 • 1 个回复 • 1033 次浏览 • 2017-12-18 08:49 • 来自相关话题

GatewayWorker报错SendBufferToWorker fail. May be the send buffer are overflow

提问mingjian 回复了问题 • 2 人关注 • 2 个回复 • 1158 次浏览 • 2017-12-15 15:40 • 来自相关话题

GatewayWorker集群,Woker服务器产生大量TIME_WAIT?

提问walkor 回复了问题 • 2 人关注 • 3 个回复 • 1058 次浏览 • 2017-11-28 14:12 • 来自相关话题

条新动态, 点击查看
walkor

walkor 回答了问题 • 2015-06-23 22:47 • 2 个回复 不感兴趣

为啥不能自定义client_id

赞同来自:

实际上GatewayWorker 2.1.4之前的版本是支持自定义client_id的,但是出现了很多问题,后来改成不可自定义,并且全局自增。

client_id 用来全局标记一个socket连接,是一个全局自增的数值,由此可以精确控制向哪个socket连接... 显示全部 »
实际上GatewayWorker 2.1.4之前的版本是支持自定义client_id的,但是出现了很多问题,后来改成不可自定义,并且全局自增。

client_id 用来全局标记一个socket连接,是一个全局自增的数值,由此可以精确控制向哪个socket连接发送数据,由于client_id自增,即使向过期的client_id发送数据不会造成影响。

client_id交给开发者自定义,难免会导致client_id重复,而client_id重复,会导致部分socket失效或者断开,也无法确定向哪个socket连接发送数据,导致应用异常,而这样的异常很难排查。

举几个例子
1、聊天客户端与wm(GatewayWorker)建立连接,这时客户端突然断网然后重新发起一个连接,而在wm这边由于客户端异常断网,没立即收到连接断开的fin包,wm这边就有两个uid的连接,当wm终于检测到第一个连接断开时,会触发onClose($uid),这时可能会认为uid下线了,做一些下线处理操作,但是实际上这个uid还有一个连接,并没有下线,导致业务异常。

2、如果把client_id定义为uid,假设用户打开了两个socket连接,那么会导致其中的一个连接失效,无法收到数据,典型的例子是两个聊天室的连接id都是uid,则只有一个聊天室能收到消息,另外一个收不到消息,或者可能在这个聊天室给uid发送消息,但是另外一个聊天室也收到了。同样如果这个用户退出了其中的一个聊天室,onClose($uid)只能知道这个uid退出了,但是不知道退出的是哪个聊天室,导致业务编程困难。

3、如果把client_id定义为uid,无法实现多客户端通讯,像PC QQ 和手机QQ同时在线是需要两条socket连接的,必须需要分开标记的,如果都统一用uid,则无法针对某个客户端推送消息,也无法方便的判断消息是从哪个平台的客户端发来的。


如果client_id自定义不当,会引发逻辑错误,比如用户A上线后client_id为1,这时要向client_id为1的的连接发送数据,恰巧A用户还没收到数据就下线了,B用户上线,也被分配client_id=1,则会导致发给A用户的数据却发给了B,导致业务异常


client_id为自增并且短时间内不重复是非常必要的,而达到这点的client_id的值对于开发者来说也没有什么意义,反而交给开发者定义会出现很多不可预知的问题,并且很难排查。

关于和现有账号绑定问题,GatewayWorker后面会考虑增加一组接口,用来绑定uid与client_id的关系,在client_id下线时自动解绑,绑定关系存储在Gateway的内存中,不用读存储,效率很高。接口类似如下:
说明:
array Gateway::getClientIdByUid(mixed $uid);
返回一个数组,数组元素为与uid绑定的所有在线的client_id。如果没有在线的client_id则返回一个空数组。

此方法可以判断一个uid是否在线。

注... 显示全部 »
说明:
array Gateway::getClientIdByUid(mixed $uid);
返回一个数组,数组元素为与uid绑定的所有在线的client_id。如果没有在线的client_id则返回一个空数组。

此方法可以判断一个uid是否在线。

注意:返回值为与uid绑定的所有在线的client_id数组。因为已经下线的client_id会自动与uid解绑,所以已经下线的client_id不会出现在返回值中。

见手册
http://workerman.net/gatewaydoc/gateway-worker-development/get-client-id-by-uid.html

Gateway::sendToGroup是给某个用户组(这里是房间)的用户连接发送数据
Gateway::sendToCurrentClient是给当前用户连接发送数据。


1、先给当前房间所有在线用户广播(Gateway::sendToGroup... 显示全部 »

Gateway::sendToGroup是给某个用户组(这里是房间)的用户连接发送数据
Gateway::sendToCurrentClient是给当前用户连接发送数据。


1、先给当前房间所有在线用户广播(Gateway::sendToGroup)有人登录,浏览器收到login数据后将 展示到在线列表里面
2、给当前登录的用户单独放送(Gateway::sendToCurrentClient)在房间的


因为当前用户有个在线用户列表数据。而这个在线列表数据根本不需要发送给其它已经在线的用户,因为他们已经有了这份在线列表数据,只需要增量添加新用户即可。


在线用户列表数据可能会很大。例如2000人在线,每个用户记录大概50字节,那么这个列表体积可能在100KB左右。

如果这100KB数据广播给所有2000在线用户,那么将占用带宽2000*100KB=200MB=1.6Gbit,没错,需要1.6G的带宽。。。

如果是无差别的实时广播所有在线用户,2000人的聊天室每秒一次的用户登录/退出就轻松把带宽耗光了。


所以只给当前用户发送所有的在线用户列表,其他已经在线的用户只需要更新那一个上线的用户数据。
这就是为什么要分别发送。

GatewayWorker中client_id和uid之间的关系

提问walkor 回复了问题 • 5 人关注 • 4 个回复 • 3754 次浏览 • 2018-05-07 10:18 • 来自相关话题

在 event 里面 ,onmessage 里面如何 嵌入 thinkphp

提问walkor 回复了问题 • 3 人关注 • 5 个回复 • 2418 次浏览 • 2015-11-21 10:58 • 来自相关话题

为啥不能自定义client_id

提问walkor 回复了问题 • 2 人关注 • 2 个回复 • 2826 次浏览 • 2015-08-26 12:08 • 来自相关话题

Gateway Worker进程内存不断上涨

回复

提问damao 回复了问题 • 3 人关注 • 2 个回复 • 152 次浏览 • 2019-08-30 10:42 • 来自相关话题

GatewayWorker集群支持用户信息共享吗

回复

提问blogdaren 回复了问题 • 2 人关注 • 1 个回复 • 131 次浏览 • 2019-08-02 11:47 • 来自相关话题

gateway黑客会不会模拟和服务器的连接导致资源耗尽?

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 170 次浏览 • 2019-07-22 11:10 • 来自相关话题

群ID与用户ID

回复

提问blogdaren 回复了问题 • 2 人关注 • 1 个回复 • 104 次浏览 • 2019-07-17 23:23 • 来自相关话题

消息列表问题

回复

提问blogdaren 回复了问题 • 2 人关注 • 1 个回复 • 127 次浏览 • 2019-07-17 23:21 • 来自相关话题

PHP7支持多线程了,那么gatewayworker是多线程吗?

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 270 次浏览 • 2019-07-15 12:13 • 来自相关话题

客户端连接正常,但gateway连接数异常,定时有1-2个连接波动

回复

提问walkor 回复了问题 • 2 人关注 • 3 个回复 • 190 次浏览 • 2019-07-12 09:24 • 来自相关话题

GatewayWorker搭建分布式,$gateway->lanIp使用公网ip,启动报错

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 210 次浏览 • 2019-06-29 20:27 • 来自相关话题

在GatewayWoker使用tcp协议,在onMessage里怎么调用外部的http服务接口,实现http请求,有知道的么

回复

提问shasha 回复了问题 • 3 人关注 • 3 个回复 • 425 次浏览 • 2019-06-26 14:35 • 来自相关话题

@walkor 您的一对一视频聊天 为何第二个人连接服务,会想服务发起多个publish。有是二十几次,而且次数不一致。

回复

提问walkor 回复了问题 • 2 人关注 • 5 个回复 • 348 次浏览 • 2019-04-24 17:42 • 来自相关话题

关于批量操作全部session 以及批量操作某个群组session问题

回复

提问damao 回复了问题 • 2 人关注 • 1 个回复 • 343 次浏览 • 2019-04-04 15:04 • 来自相关话题

gateway进程CPU占用99%,无法正常工作

回复

提问guonan89 回复了问题 • 3 人关注 • 3 个回复 • 656 次浏览 • 2019-04-03 16:02 • 来自相关话题

特殊网络环境下部署Gateway无法启动

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 374 次浏览 • 2019-03-25 21:22 • 来自相关话题

gatewayWorker 能实现向群组group发一条只对群内某个用户可见的消息吗

回复

提问keytehu 回复了问题 • 3 人关注 • 2 个回复 • 549 次浏览 • 2019-02-24 09:32 • 来自相关话题

GatewayClient调用失败

回复

提问chaogel 回复了问题 • 6 人关注 • 11 个回复 • 4521 次浏览 • 2018-12-19 15:37 • 来自相关话题

gateway进程连接分配不平衡

回复

提问blogdaren 回复了问题 • 3 人关注 • 1 个回复 • 533 次浏览 • 2018-12-05 20:24 • 来自相关话题

Gateway中怎么把组跟uid绑定?

回复

提问WFD 发起了问题 • 1 人关注 • 0 个回复 • 486 次浏览 • 2018-11-21 16:04 • 来自相关话题

基于workerman框架的Gateway/Worker配合第三方框架下如何做websocket集群负载?

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 1819 次浏览 • 2018-11-12 16:12 • 来自相关话题

gateway框架中的Events中onMessage()中如何获取客户端ip?

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 505 次浏览 • 2018-10-25 17:43 • 来自相关话题

急 thinkphp 使用gatewayclient 无法连接服务器

回复

提问walkor 回复了问题 • 4 人关注 • 6 个回复 • 1345 次浏览 • 2018-08-29 14:23 • 来自相关话题

GatewayWorker 中如何 给作为客户端的AsyncTcpConnection 发送信息

回复

提问tufei 回复了问题 • 1 人关注 • 1 个回复 • 627 次浏览 • 2018-08-08 10:33 • 来自相关话题

session设置和获取的bug,如果session数组中存在一个二维数组 用updateSession函数对本链接更新那个二维数组会有bug

回复

提问walkor 回复了问题 • 3 人关注 • 1 个回复 • 689 次浏览 • 2018-08-03 11:04 • 来自相关话题

同一个用户登录不同设备,如何区分是移动端还是手机端

回复

提问wesley_li 回复了问题 • 2 人关注 • 2 个回复 • 1927 次浏览 • 2018-07-17 10:54 • 来自相关话题

gateway总是在发送数据给客户端后tcp状态位发送FIN断开连接。

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 756 次浏览 • 2018-06-19 16:33 • 来自相关话题

gatewayworker 有时候不进入worker

回复

提问six 回复了问题 • 2 人关注 • 1 个回复 • 591 次浏览 • 2018-06-11 10:22 • 来自相关话题

GateWay怎么使用证书。,用的text协议

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 789 次浏览 • 2018-06-04 04:33 • 来自相关话题

按照文档分离mvc层写逻辑出现stream_socket_sendto(): Զ�����ǿ�ȹر��һ�����е���ӡ�

回复

提问bianchao1 回复了问题 • 5 人关注 • 5 个回复 • 1840 次浏览 • 2018-05-29 15:32 • 来自相关话题

stream_socket_sendto(): Զ�����ǿ�ȹر��һ�����е���ӡ�

回复

提问bianchao1 回复了问题 • 6 人关注 • 6 个回复 • 1608 次浏览 • 2018-05-29 15:19 • 来自相关话题

Apache 反向代理 GatewayWorker 失败

回复

提问maq 回复了问题 • 2 人关注 • 2 个回复 • 670 次浏览 • 2018-05-16 18:37 • 来自相关话题

GatewayWorker中client_id和uid之间的关系

回复

提问walkor 回复了问题 • 5 人关注 • 4 个回复 • 3754 次浏览 • 2018-05-07 10:18 • 来自相关话题

心跳包设置pingNotResponseLimit后,客户端会断开

回复

提问walkor 回复了问题 • 6 人关注 • 4 个回复 • 2549 次浏览 • 2018-04-27 14:38 • 来自相关话题

20多个终端连接服务器后,服务器会出现延迟,终端断开后还会继续接收数据

回复

提问six 回复了问题 • 2 人关注 • 1 个回复 • 946 次浏览 • 2018-04-24 18:58 • 来自相关话题

服务器通过tcp长连接接收数据

回复

提问zhengweipx 回复了问题 • 2 人关注 • 2 个回复 • 1680 次浏览 • 2018-04-24 14:15 • 来自相关话题

start_gateway.php里可以获取client_id吗?

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 855 次浏览 • 2018-04-13 13:58 • 来自相关话题

如何在onWebSocketConnect回调中,获取client_id?

回复

提问JoeZing 回复了问题 • 2 人关注 • 4 个回复 • 2158 次浏览 • 2018-04-12 14:48 • 来自相关话题

分布式问题求助

回复

提问walkor 回复了问题 • 3 人关注 • 2 个回复 • 731 次浏览 • 2018-04-07 14:48 • 来自相关话题

gateway,无法查看status,显示not run。

回复

提问banice 回复了问题 • 1 人关注 • 1 个回复 • 1033 次浏览 • 2017-12-18 08:49 • 来自相关话题

GatewayWorker报错SendBufferToWorker fail. May be the send buffer are overflow

回复

提问mingjian 回复了问题 • 2 人关注 • 2 个回复 • 1158 次浏览 • 2017-12-15 15:40 • 来自相关话题

GatewayWorker集群,Woker服务器产生大量TIME_WAIT?

回复

提问walkor 回复了问题 • 2 人关注 • 3 个回复 • 1058 次浏览 • 2017-11-28 14:12 • 来自相关话题

event-loop的区别?

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 907 次浏览 • 2017-08-21 17:53 • 来自相关话题

用workerman和layim做了个网站聊天插件 webim-plugin

案例479820787 发表了文章 • 0 个评论 • 1046 次浏览 • 2018-11-06 15:00 • 来自相关话题

用workerman - gatewayworker 和layim做了个网站聊天插件,官网登录后右下角就会弹出聊天面板,含有手机端和PC端,含有完整的右键菜单功能。欢迎大家访问查看。 官网地址:https://www.implugin.cn ...查看全部
用workerman - gatewayworker 和layim做了个网站聊天插件,官网登录后右下角就会弹出聊天面板,含有手机端和PC端,含有完整的右键菜单功能。欢迎大家访问查看。
官网地址:https://www.implugin.cn
展示效果:

EA87D294-2317-47DE-A0AC-8ED9FDD11E0A.png