长连接,长轮询,websocket有什么区别和联系?
今天看websocket原理,发现网上有的人说websocket是HTTP长连接,有的说是webSocket TCP连接。
HTTP长连接的意思是设置connection:keep-alive的意思吗?是不是连接时间很长就算是长连接啊?
对于长轮询,发送请求后HTTP连接不断开,除非数据变动需要响应或者超时或者断网。那么在这一次轮询中HTTP连接也是长久的啊,这算是长连接吗?
为什么网上说“使用传统的 HTTP 轮询或者长连接的方式也可以实现类似服务器推送的效果,但是这类方式都存在资源消耗过大或推送延迟等问题。”使用websocket建立了连接之后服务端就会一直推送消息给客户端,而不需要像长轮询那样每次轮询都有建立新的HTTP,TCP连接。那么使用websocket的时候一直不断开连接难道不算是长连接?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
轮询就是一般就是设置一个无限的循环,不停的发起ajax请求,直到得到需要的结果。
例如:
h5支付,当打开支付页面后不断发送请求,查询用户是否完成了支付
如果没有,继续请求
如果是,跳到支付成功显示页面
所以,轮询只是一波又一波的ajax请求而已,并不是长连接
轮询就是自己不断去看有没数据。
以点餐排号为例,轮询就是每隔一段时间就去看看有位没有。短的轮询就是看到没位时就坐下来休息一下再去问。长轮询就是一直在前台耗着,一定要服务员给你个位,通常坚持一段时间之后服务员把你赶走(或者你自己放弃了),你一坐下也不休息马上又去找服务员,开始新一轮长轮询。
短轮询就是没结果时直接返回,长轮询就是没结果等到有结果。
keep-alive说的是对底层tcp链接的复用,没keep-alive也能长轮询。