(ixwebsocket) New option to set the min wait between reconnection attempts. Still default to 1ms. (setMinWaitBetweenReconnectionRetries).
This commit is contained in:
@ -22,12 +22,14 @@ namespace ix
|
||||
const int WebSocket::kDefaultPingIntervalSecs(-1);
|
||||
const bool WebSocket::kDefaultEnablePong(true);
|
||||
const uint32_t WebSocket::kDefaultMaxWaitBetweenReconnectionRetries(10 * 1000); // 10s
|
||||
const uint32_t WebSocket::kDefaultMinWaitBetweenReconnectionRetries(1); // 1 ms
|
||||
|
||||
WebSocket::WebSocket()
|
||||
: _onMessageCallback(OnMessageCallback())
|
||||
, _stop(false)
|
||||
, _automaticReconnection(true)
|
||||
, _maxWaitBetweenReconnectionRetries(kDefaultMaxWaitBetweenReconnectionRetries)
|
||||
, _minWaitBetweenReconnectionRetries(kDefaultMinWaitBetweenReconnectionRetries)
|
||||
, _handshakeTimeoutSecs(kDefaultHandShakeTimeoutSecs)
|
||||
, _enablePong(kDefaultEnablePong)
|
||||
, _pingIntervalSecs(kDefaultPingIntervalSecs)
|
||||
@ -136,12 +138,24 @@ namespace ix
|
||||
_maxWaitBetweenReconnectionRetries = maxWaitBetweenReconnectionRetries;
|
||||
}
|
||||
|
||||
void WebSocket::setMinWaitBetweenReconnectionRetries(uint32_t minWaitBetweenReconnectionRetries)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_configMutex);
|
||||
_minWaitBetweenReconnectionRetries = minWaitBetweenReconnectionRetries;
|
||||
}
|
||||
|
||||
uint32_t WebSocket::getMaxWaitBetweenReconnectionRetries() const
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_configMutex);
|
||||
return _maxWaitBetweenReconnectionRetries;
|
||||
}
|
||||
|
||||
uint32_t WebSocket::getMinWaitBetweenReconnectionRetries() const
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_configMutex);
|
||||
return _minWaitBetweenReconnectionRetries;
|
||||
}
|
||||
|
||||
void WebSocket::start()
|
||||
{
|
||||
if (_thread.joinable()) return; // we've already been started
|
||||
@ -311,8 +325,10 @@ namespace ix
|
||||
|
||||
if (_automaticReconnection)
|
||||
{
|
||||
duration = millis(calculateRetryWaitMilliseconds(
|
||||
retries++, _maxWaitBetweenReconnectionRetries));
|
||||
duration =
|
||||
millis(calculateRetryWaitMilliseconds(retries++,
|
||||
_maxWaitBetweenReconnectionRetries,
|
||||
_minWaitBetweenReconnectionRetries));
|
||||
|
||||
connectErr.wait_time = duration.count();
|
||||
connectErr.retries = retries;
|
||||
|
@ -101,6 +101,7 @@ namespace ix
|
||||
void disableAutomaticReconnection();
|
||||
bool isAutomaticReconnectionEnabled() const;
|
||||
void setMaxWaitBetweenReconnectionRetries(uint32_t maxWaitBetweenReconnectionRetries);
|
||||
void setMinWaitBetweenReconnectionRetries(uint32_t minWaitBetweenReconnectionRetries);
|
||||
uint32_t getMaxWaitBetweenReconnectionRetries() const;
|
||||
const std::vector<std::string>& getSubProtocols();
|
||||
|
||||
|
@ -6,4 +6,4 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#define IX_WEBSOCKET_VERSION "11.1.2"
|
||||
#define IX_WEBSOCKET_VERSION "11.1.3"
|
||||
|
Reference in New Issue
Block a user