ws connect mode / add a flag to disable automatic reconnection, not hooked up yet

This commit is contained in:
Benjamin Sergeant 2019-04-29 14:31:29 -07:00
parent 8e4cf74974
commit 705e0823cb
3 changed files with 16 additions and 11 deletions

View File

@ -58,6 +58,7 @@ int main(int argc, char** argv)
bool compress = false; bool compress = false;
bool strict = false; bool strict = false;
bool stress = false; bool stress = false;
bool disableAutomaticReconnection = false;
int port = 8080; int port = 8080;
int redisPort = 6379; int redisPort = 6379;
int statsdPort = 8125; int statsdPort = 8125;
@ -87,6 +88,7 @@ int main(int argc, char** argv)
CLI::App* connectApp = app.add_subcommand("connect", "Connect to a remote server"); CLI::App* connectApp = app.add_subcommand("connect", "Connect to a remote server");
connectApp->add_option("url", url, "Connection url")->required(); connectApp->add_option("url", url, "Connection url")->required();
connectApp->add_flag("-d", disableAutomaticReconnection, "Disable Automatic Reconnection");
CLI::App* chatApp = app.add_subcommand("chat", "Group chat"); CLI::App* chatApp = app.add_subcommand("chat", "Group chat");
chatApp->add_option("url", url, "Connection url")->required(); chatApp->add_option("url", url, "Connection url")->required();
@ -218,7 +220,7 @@ int main(int argc, char** argv)
} }
else if (app.got_subcommand("connect")) else if (app.got_subcommand("connect"))
{ {
ret = ix::ws_connect_main(url); ret = ix::ws_connect_main(url, disableAutomaticReconnection);
} }
else if (app.got_subcommand("chat")) else if (app.got_subcommand("chat"))
{ {

View File

@ -31,7 +31,7 @@ namespace ix
int ws_chat_main(const std::string& url, int ws_chat_main(const std::string& url,
const std::string& user); const std::string& user);
int ws_connect_main(const std::string& url); int ws_connect_main(const std::string& url, bool disableAutomaticReconnection);
int ws_receive_main(const std::string& url, int ws_receive_main(const std::string& url,
bool enablePerMessageDeflate, bool enablePerMessageDeflate,

View File

@ -14,7 +14,8 @@ namespace ix
class WebSocketConnect class WebSocketConnect
{ {
public: public:
WebSocketConnect(const std::string& _url); WebSocketConnect(const std::string& _url,
bool disableAutomaticReconnection);
void subscribe(const std::string& channel); void subscribe(const std::string& channel);
void start(); void start();
@ -29,10 +30,16 @@ namespace ix
void log(const std::string& msg); void log(const std::string& msg);
}; };
WebSocketConnect::WebSocketConnect(const std::string& url) : WebSocketConnect::WebSocketConnect(const std::string& url,
bool disableAutomaticReconnection) :
_url(url) _url(url)
{ {
; if (disableAutomaticReconnection)
{
std::cout << "Disabling automatic reconnection with "
"_webSocket.disableAutomaticReconnection()"
" not supported yet" << std::endl;
}
} }
void WebSocketConnect::log(const std::string& msg) void WebSocketConnect::log(const std::string& msg)
@ -113,10 +120,10 @@ namespace ix
_webSocket.send(text); _webSocket.send(text);
} }
void interactiveMain(const std::string& url) int ws_connect_main(const std::string& url, bool disableAutomaticReconnection)
{ {
std::cout << "Type Ctrl-D to exit prompt..." << std::endl; std::cout << "Type Ctrl-D to exit prompt..." << std::endl;
WebSocketConnect webSocketChat(url); WebSocketConnect webSocketChat(url, disableAutomaticReconnection);
webSocketChat.start(); webSocketChat.start();
while (true) while (true)
@ -149,11 +156,7 @@ namespace ix
std::cout << std::endl; std::cout << std::endl;
webSocketChat.stop(); webSocketChat.stop();
}
int ws_connect_main(const std::string& url)
{
interactiveMain(url);
return 0; return 0;
} }
} }