开发者社区> 问答> 正文

关于长链接

我这段代码如何改成长连接操作?这个心跳是怎么实现的?死循环开启多个线程,就是开启长连接?我倒觉得第二个靠谱一些,自己 setKeepAlived 还主动关闭了连接,毕竟心跳只是检测,长时间未连接,会主动关闭的。 但是另一个问题就是如果心跳通过死循环就能做到,这是我执行 telnet localhost 8080的结果:telnet发送一次后自然就停止了。是telnet命令的问题?只能维持一次请求,而不是一个连接?
1.png 2.png 3.png 4.png
来源:云原生后端社区

展开
收起
Atom 2020-04-25 13:35:50 549 0
1 条回答
写回答
取消 提交回答
  • 首选,我们必须弄清楚一个概念问题,就是TCP的长连接问题,具体请参考徐靖峰的文章
    1.png 2.png
    所以这个问题本身提问就存在一定问题,严格来讲,甚至不成立。Socket通信完全基于TCP处理的,而TCP不存在真正意义上的长连接 3.png
    所以,如何实现该问题中所谓的”长连接”?只要每次请求,后台不进行主动即可关闭。而且这个demo如果测试只能使用telnet进行TCP连接,而长短连接都是在应用层协议上开启的,无法做出主动判断,只能后台自己进行相应的逻辑判断和处理,更何况TCP协议本身不存在长连接这一概念,只要维持活性即可。
    来源:云原生后端社区

    2020-04-25 13:40:59
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
探索连接的最后十秒”落时”的网关 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载