了解浏览器和服务器通信的方法
http
请求
http
请求就是客户端向服务器发送请求,服务器响应,完成请求就断开连接。
优点:操作简单,几乎所有浏览器都支持。
缺点:HTTP是无状态的,服务器无法跟踪客户端的状态信息。
http
轮询
原理:客户端每隔一段时间向服务器发送http
请求,服务器收到请求后向客户端返回最新的数据。分为长轮询和短轮询。
注意这里发送请求就是http
请求,包含三次握手建立tcp
连接,服务器响应后就四次挥手断开tcp
连接。
-
短轮询原理:客户端每隔一段时间向服务器发送请求,服务器接收到数据之后,检查是否有新数据,如果有新数据返回数据,如果没有新数据就返回空。
-
优点:客户端可以及时获取数据。
-
缺点:浪费服务器资源,因为会产生大量的请求和响应。
-
长轮询原理:客户端向服务器发送请求,服务器收到请求之后,会等待一段时间(直到有数据或者超时),如果有新数据就返回数据,如果没有新数据,超时之后就返回空。客户端接收到响应后再次发送请求。
-
优点:相比短轮询减少了响应次数,从而减少了服务器资源的浪费。客户端可以实时获取数据
总结http
轮询:可以实现实时通信,但是要注意轮询间隔和超时设置。
http
轮询使用场景:即时消息推送,即时状态更新。1
websocket
websocket
是一种协议,在服务器和客户端之间建立实时,双向的连接。通过单个TCP
连接建立全双工通信。
原理:客户端发送http
请求,请求头中包含升级协议的信息,表示希望变成websocket
连接,服务器收到请求后同意升级协议,返回的响应包含websocket
连接的相关信息(比如唯一标识SID),之后就可以进行双向数据通信了(使用ws/wss
协议,不再是http/https
协议)。
优点:减少服务器负载(不需要每次交互都重新建立连接)。
缺点:兼容性问题(浏览器是否支持),安全性问题(保持连接的过程受到攻击)
websocket
使用场景:在线聊天,多人协作应用。
SSE
SSE
基于http
的单向、持久长连接的通信方式,服务器向客户端推送实时数据,但客户端不可以向服务器发送数据。
优点:如果连接断开SSE会尝试重连。缺点:单向通信,兼容性问题(浏览器是否支持),仅可以传输文本信息。
SSE
使用场景:股票价格实时变动,Chatgpt