关于java的socket长链接

_YuLF 2019-06-13 09:45:56
需求:用户登录之后通过首页socket链接服务端.链接之后需要发送心跳包保持链接,但用户退出之后如果没有关闭该长链接,那么就会一直保存这个长链接在tomcat里面, 问题:但当用户第二次登录,如何找到上一次没断开的链接并控制,还有页面的状态内容,刚开始想的是把状态存数据库,后面发现对链接不太合理,有经验的大佬提供思路即可,谢谢
...全文
458 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2019-06-17
  • 打赏
  • 举报
回复
引用 8 楼 qq_42235984 的回复:
[quote=引用 7 楼 maradona1984 的回复:] 你这种需求算伪需求,心跳保持那自然不能断开,管他是否退出,那这是你们设计的问题,如果心跳不能保持,你想不断都难,不存在会一直保存
是的,在保持心跳的情况下不会断,会存在tomcat里面,但是遇到特殊情况了,比如连接被服务端重置,或者遇到其他未知的异常无法捕获这种,那就无法获取到状态了,或者在连接没都断的时候,页面退出登录,再次登录的时候这种用什么获取之前没断开的链接状态并控制[/quote] 你是websocket?具体问题具体分析,如果是html页面,退出刷新页面,连接在刷新的时候断,如果是app,没有通信超过多长时间就会断连接,服务端做好配置即可,完全可以解决你的问题啊 你回复我的内容我都有点把握不住你到底是担心啥?
低级攻城狮 2019-06-17
  • 打赏
  • 举报
回复
其实你可以用webSocket,贼好用
低级攻城狮 2019-06-17
  • 打赏
  • 举报
回复
用键值对的方式缓存到jvm中,只要服务器不重启,就一直在
_YuLF 2019-06-15
  • 打赏
  • 举报
回复
引用 6 楼 qq_1379807935 的回复:
服务端主动心跳请求客户端,如果几次没有收到客户端的响应,服务端主动断开连接

额服务端提供IP端口密码。我这边无法操作,自然也没服务端发送心跳的一说,服务端就是一直产生日志
_YuLF 2019-06-15
  • 打赏
  • 举报
回复
引用 7 楼 maradona1984 的回复:
你这种需求算伪需求,心跳保持那自然不能断开,管他是否退出,那这是你们设计的问题,如果心跳不能保持,你想不断都难,不存在会一直保存


是的,在保持心跳的情况下不会断,会存在tomcat里面,但是遇到特殊情况了,比如连接被服务端重置,或者遇到其他未知的异常无法捕获这种,那就无法获取到状态了,或者在连接没都断的时候,页面退出登录,再次登录的时候这种用什么获取之前没断开的链接状态并控制
夏阳_2021 2019-06-14
  • 打赏
  • 举报
回复
服务端主动心跳请求客户端,如果几次没有收到客户端的响应,服务端主动断开连接
maradona1984 2019-06-14
  • 打赏
  • 举报
回复
你这种需求算伪需求,心跳保持那自然不能断开,管他是否退出,那这是你们设计的问题,如果心跳不能保持,你想不断都难,不存在会一直保存
Defonds 2019-06-13
  • 打赏
  • 举报
回复
保存又如何?新建的代价很大滴
适当考虑下是否引入连接池
110成成 2019-06-13
  • 打赏
  • 举报
回复
服务端不处理吗?如果都是非正常关闭,那连接越积越多,不影响正常连接吗?这些连接请求放在数据库中不如放在缓存中,redis?
_YuLF 2019-06-13
  • 打赏
  • 举报
回复
引用 4 楼 k10509806 的回复:
这种ajax轮询就好了!
额 这个再刚想的时候就排除了
k10509806 2019-06-13
  • 打赏
  • 举报
回复
这种ajax轮询就好了!
_YuLF 2019-06-13
  • 打赏
  • 举报
回复
引用 1 楼 110成成 的回复:
服务端不处理吗?如果都是非正常关闭,那连接越积越多,不影响正常连接吗?这些连接请求放在数据库中不如放在缓存中,redis?
额这边就是一个客户端socket链接服务端读取服务端的信息的,关键是已链接的长连接二次登陆的可控性,一个socket链接还能放数据库吗

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧