1,长连接是不是保持 tcp 连接不断开,网上有人说是保持 http 连接不断开,但是http只是应用层协议,和连接的建立没关系吧
2,长连接实现的原理是什么?一般情况下当客户端将服务器发送的数据读完之后,就会关闭tcp连接呀。
3,采用长连接的方式,是不是意味着100万的用户同时在线,就有100条连接一直存在,不会关闭,那么上限是多少?这么多连接​不关闭,会不会有什么​影响呢?

解决方案 »

  1.   

    长连接就是连接两端都专门给对方保留一个端口,不断监听对方是否发送消息。tcp是底层的协议,http确实是应用层高协议,是基于tcp的。
    如果你懂http的实现原理,你就能懂tcp实现原理了。http通过应用逻辑,在通信时建立一个连接,通信完毕后将连接主动终止,也就是说,http的服务端并不会一直为一个客户端保留端口监听。
    至于100万同时在线的问题,要看你的设备性能了,还有端口数量,带宽。tcp有一点不好的地方就是,很有可能,连接的一端已经释放端口而另一方什么都不知道,还在同一个端口上监听那个断开的对方,这会造成资源浪费,所以tcp的使用,一般都伴随着简单的协议开发,常见的就是心跳机制,tcp双方保持固定间隔发送心跳,如果一段时间没有收到,则会认为对方已经断开,那本地以要释放端口,等待和别人建立另一个连接