到目前为止,我只使用HTTP/1.1,但最近我切换到HTTP/2。在1.1版本中,我遇到了请求数量限制问题,但HTTP/2使用一个多路复用连接,这是否意味着我可以保持打开多个SSE通道而没有问题,还是应该只使用一个内部消息路由解决方案?使用HTTP/2时可以有多个开放的SSE频道吗?
2
A
回答
3
如果您想要安全:只使用一个通道或仅使用其中一部分通道并在内部多路复用。
较长的回答:更多的通道导致HTTP/1.1出现问题的原因是每个通道都需要一个专用的TCP连接,并且浏览器限制每个选项卡的并发TCP连接数(我认为约为10)。使用HTTP/2可以在单个连接上进行并发HTTP请求。因此打开多个并发SSE流更有可能。然而,浏览器(以及web服务器)仍然可以通过TCP连接限制它们支持的并发HTTP/2流的数量。 HTTP/2甚至支持通过允许HTTP/2设置中的每个对等体传送它支持的最大数量的并发流(SETTINGS_MAX_CONCURRENT_STREAMS
)。为了安全起见,您需要弄清楚目标浏览器和Web服务器支持的限制以及使用较少数量的SSE流。不幸的是,我不知道它是否属于任何HTML或浏览器规范的一部分,它们都应该至少支持通过HTTP/2发出的指定数量的并发请求。如果你保持低请求的数量,你可以避免遇到问题。
仅使用少数几个通道的另一个好处是,您仍然可以很好地支持HTTP/1.1客户端。不仅可能直接连接到您的服务器,也可能通过代理服务器连接(这意味着连接浏览器< - >代理使用HTTP/1.1和代理< - > web服务器使用HTTP/2)。
相关问题
- 1. 可以打开频道吗?
- 2. 我可以使用单个Jsch对象打开多个频道吗?
- 3. 使用Web Audio API可以输出多于8个频道吗?
- 4. 每次可以创建多个RFCOMM频道吗?
- 5. Stackexchange.Redis,我可以一次发布到多个频道吗?
- 6. 在Go中可以使用http2客户端的proxy/socks吗?
- 7. 我可以通过一个帐户访问多个Youtube频道报道吗?
- 8. JSch中每个会话可以打开多少个频道是否有限制?
- 9. 多个通道可以使用相同的LengthFieldBasedFrameDecoder实例吗?
- 10. 我可以使用Asterisk“取消传送”2个现有频道吗?
- 11. 是否可以在HTTPListener中使用HTTP2
- 12. 挑选某个CSS时可以播放YouTube视频吗?
- 13. 可以有多个Dispatcher.BeginInvoke吗?
- 14. 有人可以解释这个SSE BigNum比较吗?
- 15. 使用directshow可以打开不完整的视频文件进行播放吗?
- 16. 什么是“频道开放”?
- 17. 使用angular-ui-router可以同时有多个状态吗?
- 18. 当我使用Finch播放音频时,我真的可以做所有OpenAL可以做的事情吗?
- 19. RTP可以用于同时播放少量视频流吗?
- 20. 多个用户可以同时访问开源Shiny Server吗?
- 21. 我可以使用libspotify播放音频而不使用低级音频API吗?
- 22. 将多个用户的视频上传到一个YouTube频道的Android应用程序有可能吗?
- 23. Google App Engine频道可以重复使用吗?
- 24. 多个音频播放器(Java或C++),可以实时修改
- 25. 我可以同时播放多少个HTML音频元素?
- 26. 单个MIDI音轨可以同时播放多个音符吗?
- 27. iOS - 可以播放RBGA视频吗?
- 28. 使用Behat时可以在Step Definition中使用多个PyStrings吗?
- 29. 我可以使用音频工具箱播放循环吗?
- 30. 我可以使用Video.JS作为音频播放器吗?