WebSocket++ 服务器结束,但端口显示仍在使用中
WebSocket++ server ending, but port says still in use
目前,我正在通过关闭(或刷新)客户端浏览器选项卡来结束我的服务器。当服务端调用WebSocket关闭函数时,服务端停止监听,关闭所有连接等退出。这是代码:
void onClose(server* s, websocketpp::connection_hdl hdl) {
bool running = false;
s->stop_listening ();
for (vector<Player *>::iterator it = players.begin(); it != players.end(); ++it) {
Player *p = *it;
s->pause_reading(p->io);
s->close(p->io, websocketpp::close::status::normal, "");
}
s->stop ();
exit (0);
}
在上面的代码片段中,我遍历了所有 "players"(已连接的客户端)。 p->io
的使用是指websocketpp::connection_hdl
.
然而,当我再次 运行 服务器时,我得到这个错误:
[info] asio listen error: system:98 (Address already in use)
我必须等待几分钟才能再次使用服务器。这在生产中既烦人又潜在危险。
知道会发生什么吗?
按照 David 所说的去做,这样您就知道自己在做什么。然后使用websocketspp函数s->set_reuse_addr(true)
目前,我正在通过关闭(或刷新)客户端浏览器选项卡来结束我的服务器。当服务端调用WebSocket关闭函数时,服务端停止监听,关闭所有连接等退出。这是代码:
void onClose(server* s, websocketpp::connection_hdl hdl) {
bool running = false;
s->stop_listening ();
for (vector<Player *>::iterator it = players.begin(); it != players.end(); ++it) {
Player *p = *it;
s->pause_reading(p->io);
s->close(p->io, websocketpp::close::status::normal, "");
}
s->stop ();
exit (0);
}
在上面的代码片段中,我遍历了所有 "players"(已连接的客户端)。 p->io
的使用是指websocketpp::connection_hdl
.
然而,当我再次 运行 服务器时,我得到这个错误:
[info] asio listen error: system:98 (Address already in use)
我必须等待几分钟才能再次使用服务器。这在生产中既烦人又潜在危险。
知道会发生什么吗?
按照 David 所说的去做,这样您就知道自己在做什么。然后使用websocketspp函数s->set_reuse_addr(true)