diff --git a/spectrum/src/frontends/slack/SlackRTM.cpp b/spectrum/src/frontends/slack/SlackRTM.cpp index e7280422c5c890a727e927491fc97b9f18f5507d..98a19205b6d4525d8926ced88c695e21eefe2632 100644 --- a/spectrum/src/frontends/slack/SlackRTM.cpp +++ b/spectrum/src/frontends/slack/SlackRTM.cpp @@ -42,6 +42,7 @@ SlackRTM::SlackRTM(Component *component, StorageBackend *storageBackend, UserInf m_component = component; m_storageBackend = storageBackend; m_counter = 0; + m_started = false; m_client = new WebSocketClient(component); m_client->onPayloadReceived.connect(boost::bind(&SlackRTM::handlePayloadReceived, this, _1)); m_client->onWebSocketConnected.connect(boost::bind(&SlackRTM::handleWebSocketConnected, this)); @@ -192,11 +193,19 @@ void SlackRTM::handleRTMStart(HTTPRequest *req, bool ok, rapidjson::Document &re LOG4CXX_INFO(logger, data); m_client->connectServer(u); - m_pingTimer->start(); } void SlackRTM::handleWebSocketConnected() { - onRTMStarted(); + if (!m_started) { + onRTMStarted(); + m_started = true; + } + + m_pingTimer->start(); +} + +void SlackRTM::handleWebSocketDisconnected(const boost::optional &error) { + m_pingTimer->stop(); }