[Libwebsockets] Using libwebsockets as a codec
Andy Green
andy at warmcat.com
Tue Jun 9 16:17:12 CEST 2020
On 6/9/20 3:02 PM, Andy Green wrote:
>
>
> On 6/9/20 2:54 PM, Ganesh Murthy wrote:
>> Our application has its own IO layer and is capable of providing
>> libwebsockets with raw byte buffers. Does lws have a pure codec mode
>> which takes in these buffers and produces http events that I can then
>> go on and use? This question was already asked 4 years ago here -
>> https://libwebsockets.org/pipermail/libwebsockets/2016-November/002888.html
>>
>>
>> The closest I could find to an api that accepts buffers is
>> https://github.com/warmcat/libwebsockets/blob/master/include/libwebsockets/lws-adopt.h#L173
>> but I don't have access to file descriptors.
>
> "Codec" means [en]coder/decoder it might mean something to you but it
> doesn't give me any picture of what you are talking about when you say
> that phrase wrt lws.
>
> Do you mean perhaps lws "raw" protocol? This just passes payload around
> without applying or removing any framing, eg
>
> https://libwebsockets.org/git/libwebsockets/tree/minimal-examples/raw/minimal-raw-netcat
Never mind I read the thread you linked...
What I was saying in there about flow control is even more relevant now
lws supports, eg, ws-over-h2.
The general feeling was that the focus was on your backend and the
network stuff should just be a black box that plays well with what you
had... due to things like tx credit management and flow control
generally, the network part needs to have its own event loop that it is
in charge of. Eg the OP mentioned for flow control
> If the write buffer fills up, the read-buffer is disabled till there
is some write space.
that seems to make a lot of assumptions about where the data is going
and relationship between tx situation and rx situation that might be so
in, eg, a proxy, but not be true for anything else.
You can fill and drain these buffers from another thread and just let
lws do whatever it's doing with them asynchronously... I am pretty sure
that can be made to work. Anything else, maybe I am just too dumb to
see the light but it seemed a lot of grinding and clanking noises that
could be expected were getting glossed over.
-Andy
>
> -Andy
More information about the Libwebsockets
mailing list