IXWebSocket
IXWebSocket copied to clipboard
Allow to bind after construction of `ix::WebSocketServer` and `ix::HttpServer`
For now a port and host has to be decided at construction time of ix::WebSocketServer and ix::HttpServer.
It will be great if the binding can be delayed.
Possible usage:
int start_server(ix::HttpServer& server, std::string const& host, int default_port, int max_port)
{
for (int port = default_port; port <= max_port; port++)
{
if (server.bind(host, port)
&& server.listen())
{
server.start();
return port;
}
}
return -1;
}
// ...
ix::HttpServer server;
int port = start_server(server, "0.0.0.0", 8080, 9000);
if (port >= 0) {
std::cerr << "Listening to 0.0.0.0:" <<port <<std::endl;
} else {
std::cerr << "Failed to start server" <<std::endl;
}
The example above may break the current API, here's another example (possibly less changes):
int start_server(ix::HttpServer& server, std::string const& host, int default_port, int max_port)
{
server.setHost(host);
for (int port = default_port; port <= max_port; port++) {
server.setPort(port);
auto [success, _] = server.listen();
if (success) {
server.start();
return port;
}
}
return -1;
}