关注本站公众号,
获取永久访问授权码
扫码关注,回复『刷题』即可
~技术问答题~
返 回

No.821 如何与服务器保持长连接?

题目描述~ 略...

寄语:问题比答案更重要

建议自己先有个思考的过程,有了自己的答案或者疑问再看解析进行对比。

目前解析在逐步添加中,也可以跳转链接查看。

ajax轮询: ajax每隔一段时间向服务端发起请求,保持数据的同步。缺点是效率低,资源浪费。

long poll长轮询: 请求头的connection需要设置为keep-alive,客户端发送请求后,如果没有数据返回,服务端将这个请求挂起放入队列,直到有数据返回,客户端再次发起请求,以此轮询。优点是能减少无效的网络传输;缺点是无法处理高并发的场景。

iframe长连接: 在网页上嵌入一个iframe标签,它的src指向一个长连接请求。优点是消息传输及时;缺点是消耗服务器资源。

websocket: 双向通信,只需要连接一次,就可以相互传输数据,适合适时通讯,数据适时更新等场景。websoket协议与http协议没有关系,它是一个建立在tcp协议上的全新协议,为了兼容http握手规范,在握手阶段依然使用http协议,握手完成之后,数据通过tcp进行传输。优点是双向通信,不存在跨域限制,只用建立一次连接;缺点是长连接受网络限制比较大,需要处理好重连,只支持ie10以上版本。

websocket与http的区别:

  • url以ws:或wss:开头。
  • 状态码是101。
  • 请求头和响应头的connection的值是upgrade,表示协议升级。
  • 请求头和响应头会有sec-websoket字段。

原文在这里:https://juejin.cn/post/6945025017834897422

解析或答案仅供参考。

关于作者

zz_jesse 专注前端

掘金 我的开源项目

公众号@前端技术江湖

一个可以帮开发者成长的公众号前端面试题库更新通知前端学习资料、干货文章

技术交流群

交流中成长大厂内推机会