Reputation: 413
I am using an example from boost beast documentation for async websocket client. The to send some command to subscribe and then to listen feed until it is terminated manually (preferably with other function or else)
Standard examples aren't applied as either it gives no response or it doesn't give permanent feed.
For references Poloniex Websocket API needs to be accessed.
Is there any example of listening to feed permanently?
Upvotes: 2
Views: 511
Reputation: 392833
The idea is to not stop "listening" (and by listening you really just mean reading).
In synchronous code, you just loop the read operation.
In async code, you make it a chain. The echo examples in Asio show this (in several ways).
In this async websocket example you'd change the on_read
completion handler
void
on_read(
beast::error_code ec,
std::size_t bytes_transferred)
{
boost::ignore_unused(bytes_transferred);
if(ec)
return fail(ec, "read");
// Close the WebSocket connection
ws_.async_close(websocket::close_code::normal,
beast::bind_front_handler(
&session::on_close,
shared_from_this()));
}
To replace async_close
with more async_read
s e.g.
// Read a message into our buffer
ws_.async_read(
buffer_,
beast::bind_front_handler(
&session::on_read,
shared_from_this()));
Upvotes: 1