diff --git a/components/esp_websocket_client/esp_websocket_client.c b/components/esp_websocket_client/esp_websocket_client.c index c31192aeb..17576fe32 100644 --- a/components/esp_websocket_client/esp_websocket_client.c +++ b/components/esp_websocket_client/esp_websocket_client.c @@ -902,6 +902,38 @@ bool esp_websocket_client_is_connected(esp_websocket_client_handle_t client) return client->state == WEBSOCKET_STATE_CONNECTED; } +size_t esp_websocket_client_get_ping_interval_sec(esp_websocket_client_handle_t client) +{ + if (client == NULL) { + ESP_LOGW(TAG, "Client was not initialized"); + return 0; + } + + if (client->config == NULL) { + ESP_LOGW(TAG, "No config available to change the ping interval"); + return 0; + } + + return client->config->ping_interval_sec; +} + +esp_err_t esp_websocket_client_set_ping_interval_sec(esp_websocket_client_handle_t client, size_t ping_interval_sec) +{ + if (client == NULL) { + ESP_LOGW(TAG, "Client was not initialized"); + return ESP_ERR_INVALID_ARG; + } + + if (client->config == NULL) { + ESP_LOGW(TAG, "No config available to change the ping interval"); + return ESP_ERR_INVALID_STATE; + } + + client->config->ping_interval_sec = ping_interval_sec == 0 ? WEBSOCKET_PING_INTERVAL_SEC : ping_interval_sec; + + return ESP_OK; +} + esp_err_t esp_websocket_register_events(esp_websocket_client_handle_t client, esp_websocket_event_id_t event, esp_event_handler_t event_handler, diff --git a/components/esp_websocket_client/include/esp_websocket_client.h b/components/esp_websocket_client/include/esp_websocket_client.h index ed4bcd504..1ef84a953 100644 --- a/components/esp_websocket_client/include/esp_websocket_client.h +++ b/components/esp_websocket_client/include/esp_websocket_client.h @@ -239,6 +239,25 @@ esp_err_t esp_websocket_client_close_with_code(esp_websocket_client_handle_t cli */ bool esp_websocket_client_is_connected(esp_websocket_client_handle_t client); +/** + * @brief Get the ping interval sec for client. + * + * @param[in] client The client + * + * @return The ping interval in sec + */ +size_t esp_websocket_client_get_ping_interval_sec(esp_websocket_client_handle_t client); + +/** + * @brief Set new ping interval sec for client. + * + * @param[in] client The client + * @param[in] ping_interval_sec The new interval + * + * @return esp_err_t + */ +esp_err_t esp_websocket_client_set_ping_interval_sec(esp_websocket_client_handle_t client, size_t ping_interval_sec); + /** * @brief Register the Websocket Events *