热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

websocket服务中,是如何清掉超时无消息的连接?

问题很容易理解,但貌似不好解决。需求背景是这样的,有个在线客服系统,客户咨询完后没结束聊天。服务端需要T超过5分钟没通信的连接。我想到的方法就是 在心跳时,查询 最后一次通信时间,超过5分钟则断开连接

问题很容易理解,但貌似不好解决。
需求背景是这样的,有个在线客服系统,客户咨询完后没结束聊天。服务端需要T超过5分钟没通信的连接。
我想到的方法就是 在心跳时,查询 最后一次通信时间,超过5分钟则断开连接。但是心跳是在客户端做的,万一客户端心跳有问题,那就失效了。

服务端做的话,估计要启动一个计划任务进程,每分钟去查询最后通信时间超时的客户,然后T掉,可是计划任务进程如何跟websocket进程通信呢?
使用swoole的IPC吗?听起来很复杂的样子。有没有简单点的?

IPC的话是不是ws进程内启动一个协程,去循环消费某个channel的消息,当该channel无消息时,一直循环,还是Co::sleep(1);一下?


推荐阅读
author-avatar
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有