可以通过设置系统内的tcp keepalive来缩短极端情况的断线吗?

当服务端不要求客户端必须回应心跳检测时,假如客户端遇到掉电等极端情况,这时服务端向客户端发送的心跳数据在TCP层面就会发送超时,遇到这种超时情况TCP会重试多次(次数及间隔依赖操作系统的配置),多次无果后会断开连接。这种极端情况从连接断开到服务端检测到可能要持续至少10分钟才触发onClose事件回调。 可以通过以下的设置来缩短超时情况下的断线吗? $ vim /etc/sysctl.conf net.ipv...

啊哒梨 发表与 2017-11-24 3159 浏览 1 回答
GatewayWorker - exit with status 11,应该如何排查呢?

2017-11-16 09:17:43 pid:22974 worker exit with status 11 根据之前的回答。 exit with status 11 是发生了coredump。 发生coredump原因一般是两个 1、使用了不稳定的扩展,例如在php7下使用libevent扩展(目前libevent扩展还没有稳定的php7版本。php7下请使用event扩展) 2、php的bug,例如使用了最...

啊哒梨 发表与 2017-11-16 5161 浏览 1 回答
使用GatewayWorker遇到TCP粘包问题

使用GatewayWorker,设备使用TCP协议进行连接,连接同一端口。 设备本身一共有 3 种设备协议可供选择 其中两种设备协议发送的数据有不同的开始和结束标记,并且开始结束标记是ASCII控制符。 另外一种设备协议发送的数据没有开始结束标记。 现在设备传输数据出现了粘包现象,想到了定制协议。设备发出的数据没办法进行修改。 最开始想到的是text协议。但是设备发出的数据没办法修改(比如加个 "\n...

啊哒梨 发表与 2017-11-10 3624 浏览 1 回答
以聊天室为例,定时器可以以房间号来做并且房间里的人共享这个定时器吗?

使用的是 GatewayWorker 使用场景:用户打开页面,页面就开始向设备发送消息,获取数据。 可以以房间号来做定时器定时向房间里的人推送消息吗?因为每个房间推送的内容不一样。 房间里的人共享这个定时器吗?这样房间就只需要创建一个定时器了,当房间没人的时候,就可以关闭这个定时器。 感谢各位大大回复!...

啊哒梨 发表与 2017-07-18 2776 浏览 1 回答
GatewayClient中使用setSession后,无法在Events.php-onClose里使用$_SESSION获取

操作步骤: 打开页面,使用webscoket连接,获取clientid,将clientid使用ajax发送到后台,使用gatewayClient中的setSession设置session信息。 刷新页面时,先执行了onClose,然后执行onConnect,重复 步骤1。 求助: 在onClose里没获取到步骤1里设置的session值,clientid没有错误。 进入页面即步骤1,执行了 php start.php...

啊哒梨 发表与 2017-06-26 2275 浏览 1 回答
timer定时器问题 不能清除定时器

问题描述: public static function onClose($client_id){ $timer_id = Timer::add(5, function($online_uid,$room_id,$redis){ ....略... },array($online_uid,$room_id,$redis),false); //echo ...

jay807750811 发表与 2016-01-15 5351 浏览 1 回答

啊哒梨

1835
积分
0
获赞数
0
粉丝数
2017-04-28 加入
🔝