web-msg中如何在断开disconnect时启动一次性定时任务,再次接入则删除该任务?

amhoho

目前用户打开单一页面后刷新时则状态在线-断开-在线,感觉这样太费事.
期望的效果是用户断开时,做个一次性定时任务,而在10s内的再次在线则进行删除该定时器.
但问题是Timer类似乎在$socket->on('disconnect',这样中无法使用.
那么请教该如何实现?

需求如:

$socket->on('login', function ($uid)use($socket){
    //存在一次性定时任务则删除
});
$socket->on('disconnect', function ($uid)use($socket){
    if(--$uidMap <= 0){
        //创建一个10秒的一次性定时任务,以便在用户离开了10秒后仍未接入时执行.
    };
});
2515 2 0
2个回答

walkor

$socket->on('disconnect',
里用Timer即可,可以用

  • 暂无评论
keytehu

估计题主没加命名空间,这样加

$socket->on('disconnect', function () {
    Workerman\Lib\Timer::add(...);
});
  • 暂无评论
年代过于久远,无法发表回答
🔝