diff --git a/ixwebsocket/IXWebSocket.cpp b/ixwebsocket/IXWebSocket.cpp index d507c62b..e2a674a6 100644 --- a/ixwebsocket/IXWebSocket.cpp +++ b/ixwebsocket/IXWebSocket.cpp @@ -203,7 +203,11 @@ namespace ix WebSocketOpenInfo(status.uri, status.headers, status.protocol), WebSocketCloseInfo())); - _ws.sendHeartBeat(); + if (_pingIntervalSecs > 0) + { + // Send a heart beat right away + _ws.sendHeartBeat(); + } return status; } @@ -232,7 +236,11 @@ namespace ix WebSocketOpenInfo(status.uri, status.headers), WebSocketCloseInfo())); - _ws.sendHeartBeat(); + if (_pingIntervalSecs > 0) + { + // Send a heart beat right away + _ws.sendHeartBeat(); + } return status; } diff --git a/ixwebsocket/IXWebSocketTransport.cpp b/ixwebsocket/IXWebSocketTransport.cpp index 3e8e475a..22e12fa5 100644 --- a/ixwebsocket/IXWebSocketTransport.cpp +++ b/ixwebsocket/IXWebSocketTransport.cpp @@ -215,14 +215,12 @@ namespace ix return now - _lastSendPingTimePoint > std::chrono::seconds(_pingIntervalSecs); } - void WebSocketTransport::sendHeartBeat() + WebSocketSendInfo WebSocketTransport::sendHeartBeat() { - if (_pingIntervalSecs <= 0) return; - _pongReceived = false; std::stringstream ss; ss << kPingMessage << "::" << _pingIntervalSecs << "s"; - sendPing(ss.str()); + return sendPing(ss.str()); } bool WebSocketTransport::closingDelayExceeded() diff --git a/ixwebsocket/IXWebSocketTransport.h b/ixwebsocket/IXWebSocketTransport.h index 66652537..64c18f54 100644 --- a/ixwebsocket/IXWebSocketTransport.h +++ b/ixwebsocket/IXWebSocketTransport.h @@ -105,7 +105,8 @@ namespace ix void dispatch(PollResult pollResult, const OnMessageCallback& onMessageCallback); size_t bufferedAmount() const; - void sendHeartBeat(); + // internal + WebSocketSendInfo sendHeartBeat(); private: std::string _url;