【发布时间】:2017-08-06 19:40:12
【问题描述】:
我有一个多线程 websocketpp 服务器。当我退出程序并重新启动时,没有连接任何客户端,它可以正常工作。
但是,当客户端连接并且我退出/重新启动时,程序会抛出此错误
[2017-08-06 15:36:05] [info] asio listen error: system:98 ()
terminate called after throwing an instance of 'websocketpp::exception'
what(): Underlying Transport Error
Aborted
我相信我有一个正确的断开序列,当我启动退出序列时我有以下消息(我自己的调试信息)
[2017-08-06 15:35:55] [control] Control frame received with opcode 8
on_close
[2017-08-06 15:35:55] [disconnect] Disconnect close local:[1000] remote:[1000]
Quitting :3
Waiting for thread
asio 错误是什么意思?我希望有人以前见过这个,以便我可以开始进行故障排除。谢谢!
编辑: 我正在调整股票 broadcast_server 示例,其中
typedef std::map<connection_hdl, connection_data, std::owner_less<connection_hdl> > con_list;
con_list m_connections;
关闭连接的代码。
lock_guard<mutex> guard(m_connection_lock);
std::cout << "Closing Server" << std::endl;
con_list::iterator it;
for (it = m_connections.begin(); it != m_connections.end(); ++it)
{
m_server.close(it->first, websocketpp::close::status::normal, "", ec);
if (ec)
{
std::cout << "> Error initiating client close: " << ec.message() << std::endl;
}
m_connections.erase(it->first);
}
在广播服务器类的析构函数中,我有一个m_server.stop()
【问题讨论】:
-
您是否正确关闭了连接?代码在哪里?
-
@Blacktempel:是的,我使用了 github 上示例中的代码来关闭连接。我已经编辑了帖子
标签: c++ boost-asio websocket++