Merges PR#2414
I used this example to start building my WebSocket application, however, I noticed that upon removing the echoing in the on_read method, the server repeatedly throws errors without exiting the method.
You can recreate this problem by replacing the async_write with do_write and cause any error (i.e. client reloads the page).
Adding a return statement here would make debugging for future changes much easier and it wouldn't harm the existing echoing in any way.
Original commit message
fixed an error in websocket_client_async_ssl
close#2315
in this example host_ string should be updated after SSL_set_tlsext_host_name just like the synced version, otherwise this would cause a handshake error
This example websocket client application uses the `system_executor` to show
how to use it with the I/O objects in ASIO and Beast.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
When using `websocket::stream`, the user has to take care to initiate
async operations within the associated strand.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
`asio::spawn` is an extension, which is not part of
the Networking TS, so the `net` alias is not appropriate in this case.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
`asio::coroutine` is an extension, which is not part of
the Networking TS, so the `net` alias is not appropriate in this case.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
- Don't set the global link settings (`<link>`) to avoid dependency
ordering issues in the future.
- Allow the user to decide on the link settings for dependencies
(filesystem/coroutine).
- Make dependencies in examples explicit.
- Remove dependency of examples on Boost.Filesystem (was not used there).
- Deduplicate build settings.
- Speed up test compilation by avoiding rebuilding of main test file.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
close#1524
It is now possible to compile examples without OpenSSL. Examples that
do require OpenSSL will be omitted.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
This changes the interface used to apply a decorator to the HTTP
request or response messages used to perform the WebSocket handshake
as follows:
* Add the `stream_base::decorator` option object
* Add `stream::set_option` overload to set the decorator from
the option
* The decorator applies to all client and server handshakes
performed on the stream after the option is set.
* Overloads of the following functions which accept a Decorator
are deprecated:
- accept, accept_ex
- handshake, handshake_ex
- async_accept, async_accept_ex
- async_handshake, async_handshake_ex
Actions Required:
* Code which passes decorator to any `websocket::stream` member
function should call `stream::set_option` instead with a newly
constructed `stream_base::decorator` object containing the
decorator. Alternatively, the macro `BOOST_BEAST_ALLOW_DEPRECATED`
may be defined to 1.