Skip to content

Commit db0f51e

Browse files
committed
Merge branch 'dev_tcp_client_chengxin' into 'feature_tcp_client'
【FIX】第一次连接的时候域名解析失败后续也得尝试重连,连接的时候就启动监测状态的定时器,连接代码复用 See merge request server/openapi/openapi-cpp-sdk!26
2 parents cdd51c7 + 1c02c9b commit db0f51e

File tree

1 file changed

+10
-24
lines changed

1 file changed

+10
-24
lines changed

src/push_socket/push_socket.cpp

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ void TIGER_API::PushSocket::set_inner_error_callback(const std::function<void(st
6060

6161
void 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

Comments
 (0)