[Libwebsockets] A question about close frame ctroll for ws client in libwebsockets

Andy Green andy at warmcat.com
Fri Mar 13 06:35:47 CET 2020



On 3/13/20 4:24 AM, huangkaicheng wrote:
> Hi,
> 
>        We use libwebsockets as ws client. We want to know that how to 
> get the reason code and descption if ws server send close frame with 
> close_staus and buffer . We found the interface “lws_close_reason” about 
> send to close frame in libwebsocket.h
...
>     but we does not  found how to get reason when ws client receive 
> close frame.
> 
>     as ws client ,how to get close status and buf? Can callback reason 
> about “LWS_CALLBACK_CLOSED” get close status ? if not, how to get it. 
> Please help answer for me. Thanks.

You should get a LWS_CALLBACK_WS_PEER_INITIATED_CLOSE callback if the 
peer sent the CLOSE frame and we received it

https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/lws-callbacks.h#n425-433

... but CLOSE frames are pretty unreliable... if anything acted to stop 
the tcp link passing traffic, or broke the tls tunnel, or there was a 
protocol violation at ws layer, or you wanted to close but you're in the 
middle of a long data frame, all of these mean you won't be able to 
transfer another control frame, and the connection is just ended 
suddenly.  So while it's OK to handle them it's not a good idea to 
assume you will get one.

-Andy


More information about the Libwebsockets mailing list