现在有一个需求,就是客服系统出现了客服在线上,然后掉线以后,未触发disconnect事件,现在想要知道有没有方法在服务端检查链接是不是在线。
主要的目的是确保客服人员掉线的时候,服务端能够感知到客服人员已经掉线,如果直接拔网线,socketio 是无法感知到disconnect事件
只有一个办法,定时心跳,要求实时性高,就把心跳时间做短.
PHPSocketIO,说是有心跳,我也没有见到怎么搞,
做心跳大概是要这几个,第一,全部客户端的socket对象,这个你可以在 connection 事件的时候,保存到一个数组里面去,第二个就是添加一个更新最后通信时间的事件,事件里面把最后通信时间更新到socket对象里面去,然后添加一个 全局定时器,里面循环判断socket对象哪个的最后通信时间大于默认时间,就可以算他已掉线了.至于最后一步,我看了下文档,好像还真找不到让phpsocketIo 掉线的方法,这个你就要去看看他源码了.
感谢回答,我去做个尝试,
只有一个办法,定时心跳,要求实时性高,就把心跳时间做短.
PHPSocketIO,说是有心跳,我也没有见到怎么搞,
做心跳大概是要这几个,第一,全部客户端的socket对象,这个你可以在 connection 事件的时候,保存到一个数组里面去,第二个就是添加一个更新最后通信时间的事件,事件里面把最后通信时间更新到socket对象里面去,然后添加一个 全局定时器,里面循环判断socket对象哪个的最后通信时间大于默认时间,就可以算他已掉线了.至于最后一步,我看了下文档,好像还真找不到让phpsocketIo 掉线的方法,这个你就要去看看他源码了.
感谢回答,我去做个尝试,