что происходит внутри run (), но вне обработчиков? / где должна быть размещена send ()? - PullRequest
0 голосов
/ 25 июня 2019

Я хочу send сообщений, когда захочу.Тем не менее, я не знаю, где поставить send().На самом деле я не знаю, что происходит после вызова run(), но не внутри обработчика.

Моя текущая настройка - просто send мое сообщение в on_open, потому что это единственное место, где я могу поместить send, чтобы заставить его работать.Тем не менее, отправка нескольких сообщений таким способом оказывается проблемой.Я могу закрыть соединение с on_message, но я не могу снова send через этого клиента, независимо от того, снова я connect или run().

Идеальным решением было бы отказаться от close и повторно открыть соединение или конечную точку.Снова, я хотел бы знать, куда я должен поместить send, если не в on_open или on_message

c.init_asio();
c.start_perpetual();//I've tried both perpetual and non-perpetual 

//[associate handlers]

c.connect(con); //connecting and running works fine;
c.run();        //on_open, on_message work fine
sleep(15);      //is 15 seconds enough for the asio to clean up everything?
c.connect(con); //any permutation of these two lines
c.run();        //do  nothing after close() has been called
std::string test("test");
con->send(test,websocketpp::frame::opcode::TEXT); //this does nothing

, используя C ++ 11 и VS2015.Кроме того, я не могу скопировать / вставить код, поэтому я мог пропустить некоторые глупые опечатки. Не уверен, что еще сказать.Я не знаю, где я могу поставить send, чтобы я мог отправить его по нажатию кнопки, например

...