我这段代码如何改成长连接操作?这个心跳是怎么实现的?死循环开启多个线程,就是开启长连接?我倒觉得第二个靠谱一些,自己 setKeepAlived 还主动关闭了连接,毕竟心跳只是检测,长时间未连接,会主动关闭的。 但是另一个问题就是如果心跳通过死循环就能做到,这是我执行 telnet localhost 8080的结果:telnet发送一次后自然就停止了。是telnet命令的问题?只能维持一次请求,而不是一个连接?
来源:云原生后端社区
首选,我们必须弄清楚一个概念问题,就是TCP的长连接问题,具体请参考徐靖峰的文章
所以这个问题本身提问就存在一定问题,严格来讲,甚至不成立。Socket通信完全基于TCP处理的,而TCP不存在真正意义上的长连接
所以,如何实现该问题中所谓的”长连接”?只要每次请求,后台不进行主动即可关闭。而且这个demo如果测试只能使用telnet进行TCP连接,而长短连接都是在应用层协议上开启的,无法做出主动判断,只能后台自己进行相应的逻辑判断和处理,更何况TCP协议本身不存在长连接这一概念,只要维持活性即可。
来源:云原生后端社区
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。