💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 前端如何实现即时通讯? 长连接和短连接、长轮询和短轮询 ## 长轮询和短轮询 ==短轮询== 短轮询的原理很简单,每隔⼀段时间客户端就发出⼀个请求,去获取服务器最新的数据,⼀定程度上模拟实现了即时通 讯。 优点:兼容性强,实现⾮常简单 缺点:延迟性⾼,⾮常消耗请求资源,影响性能 ==长轮询== HTTP 层,保持连接,Server 接收到 Client 的请求之后,如果没有数据更新,则连接保持一段时间,直到有数据或者超时才会返回。 页面发起一个到服务器的请求,然后服务器一直保持连接打开,直到有数据可以发送。发送完数据之后,浏览器关闭连接,随即又发送一个到服务器的新请求。这一过程在页面打开期间一直持续不断。 ⻓轮询优缺点: 优点:兼容性好,资源浪费较⼩ 缺点:服务器hold连接会消耗资源,返回数据顺序⽆保证,难于管理维护 轮询的优势:所有浏览器都支持,使用XHR对象和setTimeout()就能实现。 ## 长连接和短连接 短连接:即一次普通的Http请求。Server收到请求及时响应。 - 长连接 HTTP1.1通过使用Connection:keep-alive进行长连接,默认进行持久连接,把多个 HTTP 请求合并为一个。在一次 TCP 连接中可以完成多个 HTTP 请求,但是对每个请求仍然要单独发 header。实际是Tcp层的长连。 1. 长连接是指的TCP连接,而不是HTTP连接 2. 长连接意味着连接会被复用 3. 服务器和客户端都设置 Connection: keep-alive 4. 现在基本用的HTTP1.1协议,HTTP1.1默认长连接 长连接并不是永久连接的。如果一段时间内(具体时间可以在header中进行设置,也就是所谓的超时时间),这个连接没有HTTP请求发出的话,那么这个长连接就会被断掉。 ⻓连接优缺点: 优点:兼容性好,消息即时到达,不发⽆⽤请求 缺点:服务器维护⻓连接消耗资源