可以做服务器推送。但是如果客户端是低级别码头客户端,是否可以从服务器启动新的会话或流?假设客户是基于码头的低级客户端,并且连接已经建立。是否可以从Jetty启动http2会话或流假设http2连接已经存在?
0
A
回答
0
在建立初始连接并交换了前缀后,HTTP/2是一个对称协议。
HTTP 语义要求客户端发起请求,但在较低级别 - 在HTTP/2协议组帧级别 - 这不是必需的,并且服务器可能向客户端发起流。
虽然HTTP/2协议帧前言后是对称的,它仍然依赖于HTTP协议语义,即需要一个DATA
帧之前发送HEADERS
帧(即使是空的)。然而,如果你想在HTTP/2成帧的基础上构建你自己的协议,这可能不会有太大的阻碍,你只需要添加几个字节来通过网络发送。另外,有一些建议使用HTTP/2成帧来传输HTTP/2 DATA
帧内的WebSocket(纯双向协议)帧,实质上是无限响应的无限请求。但我离题了。
至于HTTP/2的Jetty特定实现,是否有可能从服务器向Android客户端发起流?
答案是双重的。
第一个是目前的实现(Jetty 9.3.8)有一些假设,即HTTP/2成帧传输的协议是HTTP。这样,服务器启动的流当前被客户端丢弃。 但是,要覆盖此行为并允许客户端正确处理服务器启动的流,这与服务器处理客户端启动的流的方式相当简单。
第二个是Jetty的HTTP/2支持通常需要JDK 8,而目前这在Android中不可用。 如果已经存在能够处理服务器启动的流的HTTP/2 Android客户端,请评论这个答案哪一个,因为我真的很感兴趣。
虽然服务器启动的流的思想很有趣,我提交了this issue来跟踪它。 如果这对你真的很重要,你可以联系Webtide(Jetty公司)来赞助实施。
相关问题
- 1. 是否可以在HTTPListener中使用HTTP2
- 2. 使用maven-jetty-plugin启用HTTP2
- 3. nativescript是否支持http2?
- 4. 在nginx上启用HTTP2
- 5. git克隆可以从http2中受益
- 6. 我们是否需要在Apache服务器上启用http2,如果CDN启用了Http2
- 7. 如何启用http2上centos7
- 8. AFNetworking现在是否支持HTTP2?
- 9. 回收Jetty Http2客户端流 - 最佳实践?
- 10. jmeter是否支持http2请求?
- 11. JW播放器是否支持HTTP2?
- 12. 在Windows上启用Nginx上的http2
- 13. HTTP2,apache2与certbot
- 14. HTTP2支持临
- 15. Netty HttpObjectAggregator与Http2
- 16. HTTP2与gunicorn
- 17. Jetty响应状态200而不是304,而使用http2
- 18. HTTP2在Chrome中推送XMLHttpRequest缓存Miss
- 19. Apache NMS - 如何确定连接是否已经启动
- 20. Ruby HTTP2 GET请求
- 21. nodejs上的ERR_INVALID_HTTP_RESPONSE http2
- 22. 检查数组是否已经存在于会话中
- 23. 如何测试会话是否已经存在?
- 24. PHP FPM Docker ZF1:会话已经启动。会话ID必须设置第一
- 25. Android,BluetoothSocket - 如何判断连接是否已经存在,或者是否需要调用连接?
- 26. 为什么在HTTP2客户端发送HEADERS帧之前发送5个PRIORITY帧?他们是否需要成功的HTTP2连接?
- 27. 如何强制HTTP2客户端重新连接到服务器?
- 28. Spring Boot HTTP2服务器推
- 29. http2:推承诺数据
- 30. HTTP2配置 - Apache Tomcat - Mac
感谢您的详细解答@sbordet,我正在研究客户端和服务器代码。很高兴知道实施起来很简单。 – Nambi