当前位置: 首页 > 知识库问答 >
问题:

HTTP:流水线、keep-alive和服务器发送的事件之间有什么关系?

李云
2023-03-14

4)服务器发送的事件使用keep-alive连接,但据我所知,SSE不使用流水线。相反,它们设法处理一个请求的多个响应,或者它们只是在下一个带有事件的响应到达时发送另一个请求。哪种猜测是正确的?

5)一个TCP连接意味着一个插座?一个插座意味着一个TCP连接?关闭/打开插座意味着关闭/打开TCP连接?

共有1个答案

屠兴旺
2023-03-14

>

  • 是的,FIFO。TCP/IP保证按顺序发送数据,因此响应不能以不同的顺序到达(如果服务器/代理有缺陷,以错误的顺序发送响应,那么您就完蛋了)。

    我不记得任何HTTP规范的原因。这可能只是谨慎,因为在某些代理/服务器中流水线实现得很差。

    HTTP规范建议每台服务器2个连接,浏览器已经确定每台服务器6-8个连接,但没有固定的限制。连接耗尽对Apache来说是一个真正的问题,对于高负载情况,建议在Apache中禁用KeepAlive并使用一个代理(例如HAProxy),该代理可以廉价地为客户端提供Keep-Alive功能。
    代理的好处是一个代理可以将连接分发到多个服务器(有助于扩展),或者可以修改通信量(例如,gzip可以压缩所有内容,即使服务器端软件没有)。

  •  类似资料:
    • 我还查看了https://www.html5rocks.com/en/tutorials/eventsource/basics/#disqus_thread设置ssses的教程,这似乎是我想象的HTTP流的设置方式。

    • 从文档中我可以看出推送API和服务器发送事件都是半双工的,但为什么两种不同的技术具有相同的功能?推送API中是否有更重要的内容?

    • http://www.html5rocks.com/en/tutorials/eventsource/basics/ 但是,我不明白一个重要的概念--是什么触发了服务器上导致消息发送的事件? 换句话说--在HTML5示例中--服务器只发送一次时间戳: 如果我建立一个实际的例子--例如,一个Facebook风格的“墙”或一个股票报价器,在这个例子中,每当某个数据发生变化时,服务器就会向客户机“推送”

    • 概述 客户端代码 概述 建立连接 open事件 message事件 error事件 自定义事件 close方法 数据格式 概述 data:数据栏 id:数据标识符 event栏:自定义信息类型 retry:最大间隔时间 服务器代码 参考链接 概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“

    • 概述 客户端代码 概述 建立连接 open事件 message事件 error事件 自定义事件 close方法 数据格式 概述 data:数据栏 id:数据标识符 event栏:自定义信息类型 retry:最大间隔时间 服务器代码 参考链接 概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“

    • 问题内容: 我实际上正在对ExpressJS服务器进行一些负载测试,并且我注意到服务器发送的响应包括一个“ Connection:Keep- Alive”标头。据我了解,该连接将保持打开状态,直到服务器或客户端发送“ Connection:Close”标头为止。 在某些实现中,“ Connection:Keep-Alive”标头带有“ Keep-Alive”标头,用于设置连接超时和通过该连接发送的