长连接的简单理解(详细定义自行百度):
与Http短连接相反,通过某种方式与服务器一直保持连接就叫长连接。(通过长连接,服务器可以主动向客户端发送消息)
长连接的原理:
1、首先说无论是http还是长连接都是都是基于tcp/ip这一传输层和网络层协议的;
2、而长连接是通过socket和ServerSocket与服务器保持连接。
3、服务端一般使用ServerSocket建立监听,监听客户端与之连接。
4、客户端使用socket,指定IP地址(具体到代码是一个string的参数)和端口(具体到代码是一个int型的参数),与服务器进行连接(之后可以用socket.isConnected()来判断是否成功连接)
长连接的意义:
1、通过长连接,可以实现服务器主动向客户端推送消息(android端的推送都是通过长连接来完成的)
2、通过长连接,可以减少客户端对服务器的轮询,减轻服务器的压力。(比如微信的新动态红点提示,如果没有长连接则需要隔一段时间来向服务器请求是否有新的动态)
3、通信效率远远高于http(每次请求服务器都要经历三次握手四次挥手,然后断开,过程往复,有些http框架虽然缓存了connection对象,性能上有一定优化,但是效率上明显还是不如长连接的)
长连接中的心跳机制以及其他的一些相关知识
引用一篇博客介绍android长连接心跳机制,其实我个人的理解就是:只有三次握手而没有心跳是不会长久的(长连接和http都是基于tcp的三次握手,长连接客户端会定时给服务器端发送心跳,证明自己还在然后得到服务端回应,证明彼此还在为对方坚持),不知道这么理解对不对。
网友评论