@@ -37,6 +37,7 @@ LibWebsocketClient::LibWebsocketClient()
3737 m_thread(nullptr ),
3838 m_end(false ),
3939 m_retry_interval(0 ),
40+ m_ping_interval(0 ),
4041 m_connection_error_notified(false ),
4142 m_url(),
4243 m_protocol(" " ),
@@ -57,12 +58,14 @@ LibWebsocketClient::~LibWebsocketClient()
5758 disconnect ();
5859}
5960
60- /* * @copydoc bool IWebsocketClient::connect(const std::string&, const std::string&, const Credentials&, unsigned int, unsigned int) */
61- bool LibWebsocketClient::connect (const std::string& url,
62- const std::string& protocol,
63- const Credentials& credentials,
64- unsigned int connect_timeout,
65- unsigned int retry_interval)
61+ /* * @copydoc bool IWebsocketClient::connect(const std::string&, const std::string&, const Credentials&,
62+ * std::chrono::milliseconds, std::chrono::milliseconds, std::chrono::milliseconds) */
63+ bool LibWebsocketClient::connect (const std::string& url,
64+ const std::string& protocol,
65+ const Credentials& credentials,
66+ std::chrono::milliseconds connect_timeout,
67+ std::chrono::milliseconds retry_interval,
68+ std::chrono::milliseconds ping_interval)
6669{
6770 bool ret = false ;
6871
@@ -83,7 +86,7 @@ bool LibWebsocketClient::connect(const std::string& url,
8386 info.options = LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;
8487 info.port = CONTEXT_PORT_NO_LISTEN;
8588 info.protocols = protocols;
86- info.timeout_secs = connect_timeout / 1000u ;
89+ info.timeout_secs = static_cast < unsigned int >(std::chrono::duration_cast<std::chrono::seconds>(connect_timeout). count ()) ;
8790 m_credentials = credentials;
8891 if (!m_credentials.tls12_cipher_list .empty ())
8992 {
@@ -110,11 +113,12 @@ bool LibWebsocketClient::connect(const std::string& url,
110113 m_end = false ;
111114 m_connection_error_notified = false ;
112115 m_connected = false ;
113- m_retry_interval = retry_interval;
114- m_retry_count = 0 ;
115- m_protocol = protocol;
116- m_thread = new std::thread (std::bind (&LibWebsocketClient::process, this ));
117- ret = true ;
116+ m_retry_interval = static_cast <uint32_t >(retry_interval.count ());
117+ m_ping_interval = static_cast <uint16_t >(std::chrono::duration_cast<std::chrono::seconds>(ping_interval).count ());
118+ m_retry_count = 0 ;
119+ m_protocol = protocol;
120+ m_thread = new std::thread (std::bind (&LibWebsocketClient::process, this ));
121+ ret = true ;
118122 }
119123 }
120124 }
@@ -213,8 +217,8 @@ void LibWebsocketClient::connectCallback(struct lws_sorted_usec_list* sul)
213217 .retry_ms_table_count = 1 ,
214218 .conceal_count = 1 ,
215219
216- .secs_since_valid_ping = 3 , /* force PINGs after secs idle */
217- .secs_since_valid_hangup = 10 , /* hangup after secs idle */
220+ .secs_since_valid_ping = client-> m_ping_interval , /* force PINGs after secs idle */
221+ .secs_since_valid_hangup = static_cast < uint16_t >( 2u * client-> m_ping_interval ) , /* hangup after secs idle */
218222
219223 .jitter_percent = 20 ,
220224 };
0 commit comments