@@ -60,6 +60,9 @@ void TIGER_API::PushSocket::set_inner_error_callback(const std::function<void(st
6060
6161void TIGER_API::PushSocket::connect ()
6262{
63+ // 启动保活监测定时任务
64+ start_keep_alive ();
65+
6366 try
6467 {
6568 boost::asio::ip::tcp::resolver resolver (*io_service_);
@@ -81,6 +84,7 @@ void TIGER_API::PushSocket::connect()
8184 catch (const boost::system::system_error& e)
8285 {
8386 LOG (ERROR) << e.what ();
87+ socket_state_ = SocketState::DISCONNECTED;
8488 }
8589}
8690
@@ -265,31 +269,16 @@ void TIGER_API::PushSocket::auto_reconnect()
265269 if (!error)
266270 {
267271 LOG (INFO) << " start automatic reconnection" ;
268- try
269- {
270- boost::asio::ip::tcp::resolver resolver (*io_service_);
271- boost::asio::ip::tcp::resolver::query query (utility::conversions::to_utf8string (client_config_.socket_url ),
272- utility::conversions::to_utf8string (client_config_.socket_port ));
273- boost::asio::ip::tcp::resolver::iterator iterator = resolver.resolve (query);
274-
275- init_socket ();
276-
277- socket_->lowest_layer ().async_connect (*iterator,
278- boost::bind (&PushSocket::handle_connect, this ,
279- boost::asio::placeholders::error, ++iterator));
280-
281- socket_state_ = SocketState::CONNECTING;
282- }
283- catch (const boost::system::system_error& e)
284- {
285- LOG (ERROR) << e.what ();
286- socket_state_ = SocketState::DISCONNECTED;
287- }
272+ connect ();
288273 }
289274 else
290275 {
291276 LOG (ERROR) << " reconnection timer error: " << error.message ();
292277 socket_state_ = SocketState::DISCONNECTED;
278+ if (reconnect_timer_)
279+ {
280+ reconnect_timer_->cancel ();
281+ }
293282 }
294283 });
295284}
@@ -345,10 +334,7 @@ void TIGER_API::PushSocket::handle_handshake(const boost::system::error_code& er
345334 // 设置socket选项
346335 socket_->lowest_layer ().set_option (boost::asio::ip::tcp::acceptor::linger (true , 0 ));
347336 socket_->lowest_layer ().set_option (boost::asio::socket_base::keep_alive (true ));
348-
349- // 启动保活监测定时任务
350- start_keep_alive ();
351-
337+
352338 // 启动异步读任务,保持IO循环的运行
353339 read_head ();
354340
0 commit comments