diff --git a/CHANGELOG.md b/CHANGELOG.md index 81cf9ad8..55866315 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ Version 62: * Remove libssl-dev from a Travis matrix item * Increase detail::static_ostream coverage * Add server-framework tests +* Doc fixes and tidy -------------------------------------------------------------------------------- diff --git a/doc/2_examples.qbk b/doc/2_examples.qbk index 7e8c71e9..a5ea23f5 100644 --- a/doc/2_examples.qbk +++ b/doc/2_examples.qbk @@ -80,8 +80,6 @@ Here are all of the example functions and classes presented throughout the documentation, they can be included and used in your program without modification -* [repo_file example/doc/core_examples.hpp] - * [repo_file example/doc/http_examples.hpp] [endsect] diff --git a/example/server-framework/README.md b/example/server-framework/README.md index bb2b266b..25bdc411 100644 --- a/example/server-framework/README.md +++ b/example/server-framework/README.md @@ -10,6 +10,7 @@ It contains the following components * WebSocket ports (synchronous and asynchronous) - Echoes back any message received + - Plain or SSL (if OpenSSL available) * HTTP ports (synchronous and asynchronous) - Serves files from a configurable directory on GET request @@ -17,6 +18,9 @@ It contains the following components - Routes WebSocket Upgrade requests to a WebSocket port - Handles Expect: 100-continue - Supports pipelined requests + - Plain or SSL (if OpenSSL available) + +* Multi-Port: Plain, OpenSSL, HTTP, WebSocket **All on the same port!** The server is designed to use modular components that users may simply copy into their own project to get started quickly. Two concepts are introduced: @@ -24,16 +28,17 @@ into their own project to get started quickly. Two concepts are introduced: ## PortHandler The **PortHandler** concept defines an algorithm for handling incoming -connections received on a listening socket. The example comes with four -port handlers: +connections received on a listening socket. The example comes with a +total of *nine* port handlers! -* `http_sync_port` Serves HTTP content using synchronous Beast calls +| Type | Plain | SSL | +| ----- | ----------------- | ------------------ | +| Sync | `http_sync_port` | `https_sync_port` | +| | `ws_sync_port` | `wss_sync_port` | +| Async | `http_async_port` | `https_async_port` | +| | `wss_sync_port` | `wss_async_port` | +| | `multi_port` | `multi_port` | -* `http_async_port` Serves HTTP content using asynchronous Beast calls - -* `ws_sync_port` A synchronous WebSocket echo server using synchronous Beast calls - -* `ws_async_port` An asynchronous WebSocket echo server using synchronous Beast calls A port handler takes the stream object resulting form an incoming connection request and constructs a handler-specific connection object which provides @@ -57,7 +62,7 @@ to a websocket port handler. ## Relationship -This diagram shows the relationship of the server object, to the four +This diagram shows the relationship of the server object, to the nine ports created in the example program, and the HTTP services contained by the HTTP ports: @@ -135,3 +140,20 @@ struct Service Send const& send) const }; ``` + +## Upgrade Service Requirements + +To work with the `ws_upgrade_service`, a port or handler needs +this signature: +```C++ + +struct UpgradePort +{ + template + void + on_upgrade( + Stream&& stream, + endpoint_type ep, + beast::http::request&& req); + +```