Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Sequential pushing with HTTP/2

Hello Simone and Greg,

Thank you for your response. I understand that a new stream is created and assigned to each of the pushed resources, and that there is no sequential requirement from the HTTP/2 point of view. However, in a use case where video segments are pushed (e.g. as soon as they are available in a live stream scenario), consecutive segments should be pushed in the right order. I made sure this is the case by checking if there are no active, open push streams before calling the push function in HTTPTransportOverHTTP2. Of course, it would be nice to know if there are other ways to achieve this behaviour. I was considering a priority based mechanism at one point, could you elaborate on why this could lead to flaws from a server point of view?

Also, I was wondering if there is a way to cancel a started, open push stream? Let's say the server is pushing a large resource A, and logic dictates that at one point it is better to stop sending this resource and move on to resource B? As far as I observed, streams are only cancelled if a timeout exception occurs (default is 15s), but there is not yet a possibility to cancel a stream from e.g. the HTTPTransportOverHTTP2 class.

Kind regards,

Jeroen van der Hooft

On 2015-02-03 23:54, Greg Wilkins wrote:
Jeroen,

the push mechanism creates new streams in the multiplexed connection for each of the pushed resources.  This is explicitly so that they can overtake each other and there is no sequential requirement.

In HTTP2, it is the priority mechanism that might be able to set some kind of sequential relationship between resources, but that comes from the client and is only advisory.  Plus Jetty currently does not implement priority and probably will not due to flaws with it from a server throughput point of view.

There is actually no way I can think of in HTTP/2 to maintain strong ordering between resources - pushed or requested.
It would be good to know your use-case for this.

cheers

On 16 January 2015 at 19:26, Jeroen van der Hooft <jeroen.vanderhooft@xxxxxxxxxxxxxx> wrote:
Hello all,

I have been using a customized version of Jetty 9.3.0 to enable the pushing of content from server to client, using HTTP/2-14. I have done some preliminary experiments, and noticed that when pushing resources a, b and c from the resource handler:

    baseRequest.getHttpChannel().getHttpTransport().push(a);
    baseRequest.getHttpChannel().getHttpTransport().push(b);
    baseRequest.getHttpChannel().getHttpTransport().push(c);

It is possible that resource b is pushed before a, or resource c is pushed before a or b. How can I make sure that resources are pushed sequentially in the current HTTP/2 implementation?

Kind regards,

Jeroen van der Hooft
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users



--
Greg Wilkins <gregw@xxxxxxxxxxx>  @  Webtide - an Intalio subsidiary
http://eclipse.org/jetty HTTP, SPDY, Websocket server and client that scales
http://www.webtide.com  advice and support for jetty and cometd.


_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

-- 
Jeroen van der Hooft
Department of Information Technology
Internet Based Communication Networks and Services (IBCN)
Ghent University - iMinds
Gaston Crommenlaan 8 (Box 201), B-9050 Gent, Belgium
T: +32 (0)9 33 14942; T Secr: +32 (0)9 33 14900
F: +32 (0)9 33 14899
E: jeroen.vanderhooft@xxxxxxxxxxxxxx
W: www.ibcn.intec.UGent.be

Back to the top