简单的说,一个原因是为了解决HTTP请求模式造成的资源浪费问题。普通的HTTP请求是,用户向服务器发出一个请求,服务器收到请求后给用户一个回复,这种交流永远是由用户发起然后服务器做出回应。这种模式下被人经常提及的问题是ajax polling (ajax轮询)和long polling。
Ajax Polling 指的是用户向服务发起请求后,服务器没有给到回复,接着用户再发一次请求再问一遍,如果服务器一直不给回复,用户发问的过程就会一直进行下去,无穷无尽。每一次发问都是一个发起HTTP连接的过程。
Long Polling是指比如用户给服务器发起一个请求要个数据,服务器此时还没有把数据准备好,用户和服务器之间的连接就一直这么保持着(两边都耗着在),就像用户给服务器打电话用户在线等着,服务器没有要挂的意思,就一直在线上让用户等着,直到服务器有了数据给用户一个回答这过程算是完成,如果服务器一直没有数据就在线上耗着超时了,这时用户服务器间连接断了。这之后用户接着打电话,服务器拿起电话接着让用户等着。一直这样下去。每次用户打电话的过程都是一个发起HTTP连接的过程。
在这两个问题中可以看出服务器是受,很被动。Ajax Polling和Long Polling都是用户不断不断给服务发送请求的交流模式,用户不断的给服务发起HTTP连接,对服务器的要求很高的。Ajax polling的情况下服务器要很快的反应速度来接招用户一直一直的发问, long polling的情况下服务器难免同时接好几个电话所以要处理好并发,所以说这是对服务器资源的消耗。WebSocket协议的出现就是让服务器主动一些,下次再写WebSocket是怎么实现的。
2021.01.12 #websocket##http##ajax轮询##long轮询##web前端##技术笔记#
为什么会有WebSocket?
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致...