请问在Gateway::bindUid($client_id,$device)后,执行$_SESSION[$client_id]=$device来保存设备id是否可行?当设备掉线出发onClose时,通过$_SESSION[$client_id]来获取设备id会有问题吗?因为我这边发现有时候会出现触发onClose时,$client_id不存在的情况,触发onClose的时候$client_id会存在丢失的情况吗?
不可行,重连client_id就变了
我在onClose里面加了!Gateway::isUidOnline($_SESSION[$client_id])这个判断,仅当这个条件成立时才会去更新数据库设备的状态
你要实现的业务场景是什么?!Gateway::isUidOnline($device)这样判断岂不是更好
你的SESSION设置是在onMesage里触发的,则无法保证每个连接都100%触发onMessage操作,例如客户端只发起了连接,还没发任何数据连接就断开。还有外网有很多网络探测程序,不会触发onMessage操作。 所以你要自己判断SESSION是否存在
不可行,重连client_id就变了
我在onClose里面加了!Gateway::isUidOnline($_SESSION[$client_id])这个判断,仅当这个条件成立时才会去更新数据库设备的状态
你要实现的业务场景是什么?!Gateway::isUidOnline($device)这样判断岂不是更好
你的SESSION设置是在onMesage里触发的,则无法保证每个连接都100%触发onMessage操作,例如客户端只发起了连接,还没发任何数据连接就断开。还有外网有很多网络探测程序,不会触发onMessage操作。
所以你要自己判断SESSION是否存在