esp_http_server: Add Websocket API to return list of active clients

Closes https://github.com/espressif/esp-idf/issues/5406
This commit is contained in:
David Cermak
2020-08-28 17:12:11 +02:00
parent d3801be6d9
commit fbf2680427
4 changed files with 60 additions and 11 deletions

View File

@@ -104,6 +104,25 @@ esp_err_t httpd_queue_work(httpd_handle_t handle, httpd_work_fn_t work, void *ar
return ESP_OK;
}
esp_err_t httpd_get_client_list(httpd_handle_t handle, size_t max_fds, httpd_client_list_t *fd_list)
{
struct httpd_data *hd = (struct httpd_data *) handle;
if (hd == NULL || max_fds == 0 || fd_list == NULL || max_fds < hd->config.max_open_sockets) {
return ESP_ERR_INVALID_ARG;
}
fd_list->active_clients = 0;
for (int i = 0; i < hd->config.max_open_sockets; ++i) {
if (hd->hd_sd[i].fd != -1) {
if (fd_list->active_clients < max_fds) {
fd_list->client_fds[fd_list->active_clients++] = hd->hd_sd[i].fd;
} else {
return ESP_ERR_INVALID_ARG;
}
}
}
return ESP_OK;
}
void *httpd_get_global_user_ctx(httpd_handle_t handle)
{
return ((struct httpd_data *)handle)->config.global_user_ctx;