Skip to content

tcp客户端掉线之后,怎么重连? #692

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
libaineu2004 opened this issue Mar 17, 2025 · 7 comments
Open

tcp客户端掉线之后,怎么重连? #692

libaineu2004 opened this issue Mar 17, 2025 · 7 comments

Comments

@libaineu2004
Copy link

tcp客户端掉线之后,怎么重连?
能否写个例程出来?
谢谢

@ithewei
Copy link
Owner

ithewei commented Mar 18, 2025

see TcpClient_test.cpp
setReconnect就是用来设置重连规则的

@xiaodaoaa
Copy link

channel->setKeepaliveTimeout(10 * 60 * 1000); //10分钟无数据交互会自动断开重新连接

@xiaodaoaa
Copy link

channel->setKeepaliveTimeout(10 * 60 * 1000); //10分钟无数据交互会自动断开重新连接

楼上说的setReconnect在正常情况下也是会自动重连。

@libaineu2004
Copy link
Author

see TcpClient_test.cpp setReconnect就是用来设置重连规则的

#631
这个问题怎么解决?setReconnect是不是不行?只能使用setKeepaliveTimeout?

@libaineu2004
Copy link
Author

libaineu2004 commented Mar 20, 2025

channel->setKeepaliveTimeout(10 * 60 * 1000); //10分钟无数据交互会自动断开重新连接

这句话是不是写在onConnection回调函数里面?
m_pClient->onConnection = [=](const hv::SocketChannelPtr &channel) {
bool connect = channel->isConnected();
channel->setKeepaliveTimeout(5 * 1000); //5s无数据交互会自动断开重新连接
};

我实测了一下,放在这里,5s之后是自动断开了。但是没有自动重新连接,得用户自己手动重新连接。

@xiaodaoaa
Copy link

channel->setKeepaliveTimeout(10 * 60 * 1000); //10分钟无数据交互会自动断开重新连接

这句话是不是写在onConnection回调函数里面? m_pClient->onConnection = [=](const hv::SocketChannelPtr &channel) { bool connect = channel->isConnected(); channel->setKeepaliveTimeout(5 * 1000); //5s无数据交互会自动断开重新连接 };

我实测了一下,放在这里,5s之后是自动断开了。但是没有自动重新连接,得用户自己手动重新连接。

配合着setReconnect一块用。

@libaineu2004
Copy link
Author

channel->setKeepaliveTimeout(10 * 60 * 1000); //10分钟无数据交互会自动断开重新连接

这句话是不是写在onConnection回调函数里面? m_pClient->onConnection = [=](const hv::SocketChannelPtr &channel) { bool connect = channel->isConnected(); channel->setKeepaliveTimeout(5 * 1000); //5s无数据交互会自动断开重新连接 };
我实测了一下,放在这里,5s之后是自动断开了。但是没有自动重新连接,得用户自己手动重新连接。

配合着setReconnect一块用。

ok,亲测可用了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants