Challenges with Implementing HTTP/3 in Vert.x Using Netty
imz87 opened this issue · 4 comments
Hi Netty Developers,
Thank you for providing extensive support for HTTP/3 in Netty. I’m currently working on implementing HTTP/3 support in Vert.x, following the same pattern as HTTP/2 in Vert.x. However, I’ve encountered a few challenges due to differences in Netty’s HTTP/3 implementation compared to HTTP/2.
Challenges:
Final Classes and Static Methods:
The Http3ClientConnectionHandler is a final class, and many methods are static, which makes it difficult to extend and customize for Vert.x. Is there a specific reason for designing these classes with so many static methods and making them final? This design choice makes it challenging to adapt them within the Vert.x framework.
Handling Multiple Streams:
I've also noticed an issue when handling large responses from the server. If the server returns a large object, the client sometimes struggles to handle the complete message, as certain parts of the message do not have an endOfStream flag like in HTTP/2. What would you suggest as the best approach to handle this? I came across the Http3FrameToHttpObjectCodec class, but I’m unsure how to use it effectively to aggregate the message. Is this the correct way to handle and aggregate returned chunks in HTTP/3?
I would greatly appreciate any insights or suggestions you might have for addressing these challenges, especially regarding extending the HTTP/3 components for use in Vert.x.
Thank you for your time and support.
Best regards,
Iman
@imz87 so is this not an issue anymore ?
Actually, the second part is resolved with Http3FrameToHttpObjectCodec. I used Http3FrameToHttpObjectCodec in Vert.x to handle and detect whether the last part is received or not.
The first part was just informational, so I don't think there is anything further to be done. It has been developed and remains unchanged. However, I would be happy if you could provide any additional information or insights about the first part.
Thanks for your response.
@imz87 I am not sure why you want to exend the class, do you have a specific need for it ?
Initially, I tried to implement HTTP/3 in Vert.x similarly to how HTTP/2 is implemented, where there is a connectionHandler in Netty for HTTP/2 that is extended in Vert.x. However, I later changed my approach and developed this part differently. I no longer need to extend the connectionHandler provided in Netty for HTTP/3. Thanks a lot for your help.