[Libwebsockets] How to disconnect a client connection?

Danomi Czaski djczaski at gmail.com
Wed Apr 1 16:49:23 CEST 2015

>On 1 April 2015 21:29:12 GMT+08:00, Danomi Czaski <djczaski at gmail.com> wrote:
>>>On 1 April 2015 03:59:03 GMT+08:00, Danomi Czaski <djczaski at
>>gmail.com> wrote:
>>>>What is the proper way to disconnect and clean up a client
>>>>There is a call for `libwebsocket_client_connect` but I don't see a
>>>>corresponding `libwebsocket_client_disconnect`.
>>>>My application needs to switch between different servers based upon a
>>>>user command.
>>>Just return nonzero from most callbacks will kill that connection.
>>>The test client tests this actually, he keeps making connections with
>>>limited lifetime that close and make a fresh connection,
>>But then I need to wait for a callback event, like
>>in order to return nonzero and terminate the connection. Can't I force
>>the close
>The design of lws is the the 'yourself' who knows the wsi for the connection,
>is in a callback for that wsi and perfectly well able to return nonzero from it with no effort.

Just asking a question.

Yep, easy to do in the callback "myself" I agree:

    int g_close_connection = 0;

    void close_lws_connection(void)
        g_close_connection = 1;

    int callback_lws(
        struct libwebsocket_context *context, struct libwebsocket *wsi,
        enum libwebsocket_callback_reasons reason,
        void *user, void *in, size_t len)
        if (g_close_connection)
            return -1;


But, I don't see how I can control when the callback for a particular
wsi executes without waiting for some event like
LWS_CALLBACK_CLIENT_RECEIVE which may or may not come.

More information about the Libwebsockets mailing list