C- libwebsockets用户指针在客户端回调中



我正在使用可venerable libwebsockets库来开发客户。

我不知道在哪里分配char *(我假定的设置中的某个地方(我可以通过客户端的lws_callback_function()中的void *user参数来获得相同的操作。

我尝试在我的lws_protocols中设置user,我尝试在struct lws_client_connect_info中设置userdata,还有很多其他我不记得的地方。

我让这个工作了,但进行了一些调查。

  1. 在lws_context_creation_info中存放用户数据:
    struct app_data_t { int something; };
    app_data_t app_data;
    app_data.something = 123456;
    ...
    lws_context_creation_info lws_cx_config; 
    ... 
    lws_cx_config.user = &app_data;
    ... 
    lws_context * lws_cx = lws_create_context(&lws_cx_config);
  1. 这样的回调恢复用户数据:
    int callback(struct lws * wsi,
                 lws_callback_reasons reason,
                 void * pss_user_data, void * in, size_t len)
    {
        lws_context * lws_cx = lws_get_context(wsi);
        app_data_t * app_data = (app_data_t *)(lws_context_user(lws_cx));
        lwsl_user("callback: enter: something=%d", app_data->something);
        ...
    }

我想您想要的是:每个连接的私人数据?

a。如果您只需要分配记忆,就可以尝试以下操作:

struct lws_protocols::per_session_data_size = 1024 bytes;
struct lws_context_creation_info::protocols = protocols;

然后您将在lws_callback(*用户(中获得它,用户是私有1024字节内存块。

b。如果您需要传递参数并使用:

lws_client_conn_info.opaque_user_data = &mydata;

在lws_callback(*WSI(中:

MyData *my_private_data = (MyData*)lws_get_opaque_user_data(wsi);

相关内容

  • 没有找到相关文章

最新更新