[Libwebsockets] Ways to send multiple client request on the same wsi
leon6827chix at gmail.com
Wed Aug 22 20:38:55 CEST 2018
Thanks for your reply Andy.
I have a few comments:
1. I quickly went thru the code (H2 client role specifically). For POLLIN,
the h2n->swsi will be set by received stream id (sid), then corresponding
h2 child wsi will be used.
For POLLOUT, it seems doing a round-robin manner to go thru all child list
of nwsi. Do I understand correctly?
2. I have already went thru the minimum-http-client-multi example. However,
from the debug log, I found that each client created its own socket (i.e.,
a nwsi and a child wsi). It seems the example creates multiple sockets
rather than reusing the same socket. What I need is one nwsi (one socket)
opened with multiple child wsi, each has its own sid value representing a
different H2 stream. I do not see such API existing. Can you help confirm?
To achieve this, seems I need to i) create new wsi; ii) add it in to nwsi's
child list; iii) lws_h2_client_handshake(new wsi). Correct?
On Tue, Aug 21, 2018 at 11:28 PM, Andy Green <andy at warmcat.com> wrote:
> On 08/21/2018 12:09 AM, Xi Chen wrote:
>> I have two issues (maybe observations) which needs some clarifications:
>> Currently I send one H2 client request vis
>> lws_client_connect_via_info(), it creates one network wsi (nwsi) and
>> then one h2 child wsi (h2_wsi). When I return -1 in the callback, it
>> frees h2_wsi only. Why nwsi is not close?
> (I must say I am gratified to hear someone talk about nwsi. After
> spending many months working on h2 support it's the first time someone read
> the code AFAIK.)
> It stays open for some time in case you have more client connections to
> the same host coming.
> Since v3.0 lws has a pretty sophisticated transparent queuing for multi
> client connection to the same vhost, that works on http/1.1 pipelining if
> that's what you got or h2, broadsiding the connections concurrently on a
> single TLS / tcp "nwsi".
>> If I want to send the same request again, seems I need to call
>> lws_client_connect_via_info() again which creates nwsi and h2_wsi
>> again (i.e., SSL handshake again), is there a way I can reuse the
>> previous allocated nwsi and h2_wsi?
> If the nwsi is still up, it should use it.
> Have a play with:
> this has switches that let you test multiple client connections
> simultaneously or with with staggered delays (to stress the queuing
> algorithm) in h1, h1 with pipelining and h2. Various combinations of this
> run as part of the CI testing on travis against both a local server and
> If there are problems coming, talking about how to reproduce them with
> that + whatever hack patch is needed will make it much easier to look at it.
>> Libwebsockets mailing list
>> Libwebsockets at ml.libwebsockets.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Libwebsockets