GatewayWorker出现个无法复现奇怪的问题

0

GatewayWorker搭了个WebSocket,在start_gateway.php把客户端IP记录到了$_SESSION里面(获取不到有默认值),并且在onMessage把登录后的用户IP和设备信息写到了数据库,onMessage 、 onClose 都打了登录后用户日志,每天大概十万个登录的用户里面会出现10个左右在onMessage里面获取不到IP等情况,并且这些用户没有触发过onClose,通过客户端传来的设备来看出问题的99%都是iPhone 6、 iPhone 7 、iPhone 8、iPad、iPhone X ,但是用户大多数是安卓手机,苹果系统里面iPhone 11比例较多却没有问题,查出问题的用户登录记录基本只有一次出问题,其他段时间登录记录都正常能获取到IP,onClose也有断开日志,请问大概是什么原因有可能造成这个情况?

已邀请:

walkor

赞同来自: scan_z

IP是在onMessage里写到session里的还是在onConnect写到session里的?



是否是用户刚好发消息来onMessage正在处理的时候断开了,然后处理到通过$_SESSION取IP的时候$_SESSION记录的东西没了。



有这个可能

scan_z

赞同来自:

我猜想的一种可能:用户连接后把设备信息发给了过来,onMessage里面正在处理着数据写到数据库的这个时候用户断开了,导致onMessage获取不到用户$_SESSION的IP,由于用户断开了onClose里面也获取不到$_SESSION用户信息所以也没写成功日志。

walkor

赞同来自:

IP记录再$_SESSION是在onMessage里记录的?有可能客户端连上了,然后没发任何信息就断开了,所以没出发onMessage,没有写入数据

要回复问题请先登录注册