总结了一下知乎高票答案https://www.zhihu.com/question/20215561
websocket是html5协议,作为http协议的补充
HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
但是http协议是非持续性的
服务器很懒,它不会主动法res给前端,只有前端不停的问他
可以作为长连接的方式有long poll,还有ajax轮询
ajax轮询:很简单就是不停的发起请求嘛
前端:有吗?
后台:没有
前端:有吗?
后台:哎哟没有啦
long poll:是采取阻塞机制,打电话,后台不接我就不挂
这两种方式的缺点很明显。ajax轮询需要服务器有很快的处理速度和资源。long poll需要有很高的并发,也就是说同时接待客户的能力。
然而websocket却可以实现,建立好连接以后,能让服务器主动发消息给前端啦哈哈哈
客户端:啦啦啦,我要建立Websocket协议,需要的服务:chat,Websocket协议版本:17(HTTP Request)
服务端:ok,确认,已升级为Websocket协议(HTTP Protocols Switched)
客户端:麻烦你有信息的时候推送给我噢。。服务端:ok,有的时候会告诉你的。
服务端:balabalabalabala
服务端:balabalabalabala
只需要经过一次HTTP请求,就可以做到源源不断的信息传送了
还有一点websocket可以建立久连接,久连接,久连接。解决资源问题,有信息的时候客服想办法通知前端,然后前端在统一转交给后台。
网友评论