Deployed 3919153 with MkDocs version: 1.1
This commit is contained in:
1 parent
c8965c8b6a
commit
6c443ee5c5
7 files changed
+78
-11
No files matched your search
@@ -92,6 +92,50 @@
|
|||||||
|
|
||||||
<li class="nav-item" data-level="1"><a href="#changelog" class="nav-link">Changelog</a>
|
<li class="nav-item" data-level="1"><a href="#changelog" class="nav-link">Changelog</a>
|
||||||
<ul class="nav flex-column">
|
<ul class="nav flex-column">
|
||||||
|
<li class="nav-item" data-level="2"><a href="#826-2020-03-16" class="nav-link">[8.2.6] - 2020-03-16</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#825-2020-03-13" class="nav-link">[8.2.5] - 2020-03-13</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#824-2020-03-13" class="nav-link">[8.2.4] - 2020-03-13</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#823-2020-03-13" class="nav-link">[8.2.3] - 2020-03-13</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#822-2020-03-12" class="nav-link">[8.2.2] - 2020-03-12</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#821-2020-03-11" class="nav-link">[8.2.1] - 2020-03-11</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#820-2020-03-11" class="nav-link">[8.2.0] - 2020-03-11</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#819-2020-03-09" class="nav-link">[8.1.9] - 2020-03-09</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#818-2020-03-02" class="nav-link">[8.1.8] - 2020-03-02</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#817-2020-02-26" class="nav-link">[8.1.7] - 2020-02-26</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item" data-level="2"><a href="#816-2020-02-26" class="nav-link">[8.1.6] - 2020-02-26</a>
|
||||||
|
<ul class="nav flex-column">
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li class="nav-item" data-level="2"><a href="#815-2020-02-23" class="nav-link">[8.1.5] - 2020-02-23</a>
|
<li class="nav-item" data-level="2"><a href="#815-2020-02-23" class="nav-link">[8.1.5] - 2020-02-23</a>
|
||||||
<ul class="nav flex-column">
|
<ul class="nav flex-column">
|
||||||
</ul>
|
</ul>
|
||||||
@@ -505,6 +549,28 @@
|
|||||||
|
|
||||||
<h1 id="changelog">Changelog</h1>
|
<h1 id="changelog">Changelog</h1>
|
||||||
<p>All changes to this project will be documented in this file.</p>
|
<p>All changes to this project will be documented in this file.</p>
|
||||||
|
<h2 id="826-2020-03-16">[8.2.6] - 2020-03-16</h2>
|
||||||
|
<p>(cobra to sentry bot + docker) default docker file uses mbedtls + ws cobra_to_sentry pass tls options to sentryClient.</p>
|
||||||
|
<h2 id="825-2020-03-13">[8.2.5] - 2020-03-13</h2>
|
||||||
|
<p>(cobra client) ws cobra subscribe resubscribe at latest position after being disconnected</p>
|
||||||
|
<h2 id="824-2020-03-13">[8.2.4] - 2020-03-13</h2>
|
||||||
|
<p>(cobra client) can subscribe with a position</p>
|
||||||
|
<h2 id="823-2020-03-13">[8.2.3] - 2020-03-13</h2>
|
||||||
|
<p>(cobra client) pass the message position to the subscription data callback</p>
|
||||||
|
<h2 id="822-2020-03-12">[8.2.2] - 2020-03-12</h2>
|
||||||
|
<p>(openssl tls backend) Fix a hand in OpenSSL when using TLS v1.3 ... by disabling TLS v1.3</p>
|
||||||
|
<h2 id="821-2020-03-11">[8.2.1] - 2020-03-11</h2>
|
||||||
|
<p>(cobra) IXCobraConfig struct has tlsOptions and per message deflate options</p>
|
||||||
|
<h2 id="820-2020-03-11">[8.2.0] - 2020-03-11</h2>
|
||||||
|
<p>(cobra) add IXCobraConfig struct to pass cobra config around</p>
|
||||||
|
<h2 id="819-2020-03-09">[8.1.9] - 2020-03-09</h2>
|
||||||
|
<p>(ws cobra_subscribe) add a --fluentd option to wrap a message in an enveloppe so that fluentd can recognize it</p>
|
||||||
|
<h2 id="818-2020-03-02">[8.1.8] - 2020-03-02</h2>
|
||||||
|
<p>(websocket server) fix regression with disabling zlib extension on the server side. If a client does not support this extension the server will handle it fine. We still need to figure out how to disable the option.</p>
|
||||||
|
<h2 id="817-2020-02-26">[8.1.7] - 2020-02-26</h2>
|
||||||
|
<p>(websocket) traffic tracker received bytes is message size while it should be wire size</p>
|
||||||
|
<h2 id="816-2020-02-26">[8.1.6] - 2020-02-26</h2>
|
||||||
|
<p>(ws_connect) display sent/received bytes statistics on exit</p>
|
||||||
<h2 id="815-2020-02-23">[8.1.5] - 2020-02-23</h2>
|
<h2 id="815-2020-02-23">[8.1.5] - 2020-02-23</h2>
|
||||||
<p>(server) give thread name to some usual worker threads / unittest is broken !!</p>
|
<p>(server) give thread name to some usual worker threads / unittest is broken !!</p>
|
||||||
<h2 id="814-2020-02-22">[8.1.4] - 2020-02-22</h2>
|
<h2 id="814-2020-02-22">[8.1.4] - 2020-02-22</h2>
|
||||||
|
|||||||
+1
-1
@@ -113,7 +113,7 @@
|
|||||||
<h3 id="per-message-deflate-compression">Per Message Deflate compression.</h3>
|
<h3 id="per-message-deflate-compression">Per Message Deflate compression.</h3>
|
||||||
<p>The per message deflate compression option is supported. It can lead to very nice bandbwith savings (20x !) if your messages are similar, which is often the case for example for chat applications. All features of the spec should be supported.</p>
|
<p>The per message deflate compression option is supported. It can lead to very nice bandbwith savings (20x !) if your messages are similar, which is often the case for example for chat applications. All features of the spec should be supported.</p>
|
||||||
<h3 id="tlsssl">TLS/SSL</h3>
|
<h3 id="tlsssl">TLS/SSL</h3>
|
||||||
<p>Connections can be optionally secured and encrypted with TLS/SSL when using a wss:// endpoint, or using normal un-encrypted socket with ws:// endpoints. AppleSSL is used on iOS and macOS, OpenSSL is used on Android and Linux, mbedTLS is used on Windows.</p>
|
<p>Connections can be optionally secured and encrypted with TLS/SSL when using a wss:// endpoint, or using normal un-encrypted socket with ws:// endpoints. AppleSSL is used on iOS and macOS, OpenSSL and mbedTLS can be used on Android, Linux and Windows.</p>
|
||||||
<h3 id="polling-and-background-thread-work">Polling and background thread work</h3>
|
<h3 id="polling-and-background-thread-work">Polling and background thread work</h3>
|
||||||
<p>No manual polling to fetch data is required. Data is sent and received instantly by using a background thread for receiving data and the select <a href="http://man7.org/linux/man-pages/man2/select.2.html">system</a> call to be notified by the OS of incoming data. No timeout is used for select so that the background thread is only woken up when data is available, to optimize battery life. This is also the recommended way of using select according to the select tutorial, section <a href="https://linux.die.net/man/2/select_tut">select law</a>. Read and Writes to the socket are non blocking. Data is sent right away and not enqueued by writing directly to the socket, which is <a href="https://stackoverflow.com/questions/1981372/are-parallel-calls-to-send-recv-on-the-same-socket-valid">possible</a> since system socket implementations allow concurrent read/writes. However concurrent writes need to be protected with mutex.</p>
|
<p>No manual polling to fetch data is required. Data is sent and received instantly by using a background thread for receiving data and the select <a href="http://man7.org/linux/man-pages/man2/select.2.html">system</a> call to be notified by the OS of incoming data. No timeout is used for select so that the background thread is only woken up when data is available, to optimize battery life. This is also the recommended way of using select according to the select tutorial, section <a href="https://linux.die.net/man/2/select_tut">select law</a>. Read and Writes to the socket are non blocking. Data is sent right away and not enqueued by writing directly to the socket, which is <a href="https://stackoverflow.com/questions/1981372/are-parallel-calls-to-send-recv-on-the-same-socket-valid">possible</a> since system socket implementations allow concurrent read/writes. However concurrent writes need to be protected with mutex.</p>
|
||||||
<h3 id="automatic-reconnection">Automatic reconnection</h3>
|
<h3 id="automatic-reconnection">Automatic reconnection</h3>
|
||||||
|
|||||||
+1
-1
@@ -240,5 +240,5 @@ webSocket.send("hello world");
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
MkDocs version : 1.1
|
MkDocs version : 1.1
|
||||||
Build Date UTC : 2020-02-23 17:49:35
|
Build Date UTC : 2020-03-17 15:47:59
|
||||||
-->
|
-->
|
||||||
@@ -1 +1 @@
|
|||||||
{"config":{"lang":["en"],"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Introduction WebSocket is a computer communications protocol, providing full-duplex and bi-directionnal communication channels over a single TCP connection. IXWebSocket is a C++ library for client and server Websocket communication, and for client and server HTTP communication. TLS aka SSL is supported. The code is derived from easywsclient and from the Satori C SDK . It has been tested on the following platforms. macOS iOS Linux Android Windows FreeBSD Example code // Required on Windows ix::initNetSystem(); // Our websocket object ix::WebSocket webSocket; std::string url(\"ws://localhost:8080/\"); webSocket.setUrl(url); // Setup a callback to be fired when a message or an event (open, close, error) is received webSocket.setOnMessageCallback([](const ix::WebSocketMessagePtr& msg) { if (msg->type == ix::WebSocketMessageType::Message) { std::cout << msg->str << std::endl; } } ); // Now that our callback is setup, we can start our background thread and receive messages webSocket.start(); // Send a message to the server (default to TEXT mode) webSocket.send(\"hello world\"); Why another library? There are 2 main reasons that explain why IXWebSocket got written. First, we needed a C++ cross-platform client library, which should have few dependencies. What looked like the most solid one, websocketpp did depend on boost and this was not an option for us. Secondly, there were other available libraries with fewer dependencies (C ones), but they required calling an explicit poll routine periodically to know if a client had received data from a server, which was not elegant. We started by solving those 2 problems, then we added server websocket code, then an HTTP client, and finally a very simple HTTP server. Contributing IXWebSocket is developed on GitHub . We'd love to hear about how you use it; opening up an issue on GitHub is ok for that. If things don't work as expected, please create an issue on GitHub, or even better a pull request if you know how to fix your problem.","title":"Home"},{"location":"#introduction","text":"WebSocket is a computer communications protocol, providing full-duplex and bi-directionnal communication channels over a single TCP connection. IXWebSocket is a C++ library for client and server Websocket communication, and for client and server HTTP communication. TLS aka SSL is supported. The code is derived from easywsclient and from the Satori C SDK . It has been tested on the following platforms. macOS iOS Linux Android Windows FreeBSD","title":"Introduction"},{"location":"#example-code","text":"// Required on Windows ix::initNetSystem(); // Our websocket object ix::WebSocket webSocket; std::string url(\"ws://localhost:8080/\"); webSocket.setUrl(url); // Setup a callback to be fired when a message or an event (open, close, error) is received webSocket.setOnMessageCallback([](const ix::WebSocketMessagePtr& msg) { if (msg->type == ix::WebSocketMessageType::Message) { std::cout << msg->str << std::endl; } } ); // Now that our callback is setup, we can start our background thread and receive messages webSocket.start(); // Send a message to the server (default to TEXT mode) webSocket.send(\"hello world\");","title":"Example code"},{"location":"#why-another-library","text":"There are 2 main reasons that explain why IXWebSocket got written. First, we needed a C++ cross-platform client library, which should have few dependencies. What looked like the most solid one, websocketpp did depend on boost and this was not an option for us. Secondly, there were other available libraries with fewer dependencies (C ones), but they required calling an explicit poll routine periodically to know if a client had received data from a server, which was not elegant. We started by solving those 2 problems, then we added server websocket code, then an HTTP client, and finally a very simple HTTP server.","title":"Why another library?"},{"location":"#contributing","text":"IXWebSocket is developed on GitHub . We'd love to hear about how you use it; opening up an issue on GitHub is ok for that. If things don't work as expected, please create an issue on GitHub, or even better a pull request if you know how to fix your problem.","title":"Contributing"},{"location":"CHANGELOG/","text":"Changelog All changes to this project will be documented in this file. [8.1.5] - 2020-02-23 (server) give thread name to some usual worker threads / unittest is broken !! [8.1.4] - 2020-02-22 (websocket server) fix regression from 8.1.2, where per-deflate message compression was always disabled [8.1.3] - 2020-02-21 (client + server) Fix #155 / http header parser should treat the space(s) after the : delimiter as optional. Fixing this bug made us discover that websocket sub-protocols are not properly serialiazed, but start with a , [8.1.2] - 2020-02-18 (WebSocketServer) add option to disable deflate compression, exposed with the -x option Line truncated
|
{"config":{"lang":["en"],"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Introduction WebSocket is a computer communications protocol, providing full-duplex and bi-directionnal communication channels over a single TCP connection. IXWebSocket is a C++ library for client and server Websocket communication, and for client and server HTTP communication. TLS aka SSL is supported. The code is derived from easywsclient and from the Satori C SDK . It has been tested on the following platforms. macOS iOS Linux Android Windows FreeBSD Example code // Required on Windows ix::initNetSystem(); // Our websocket object ix::WebSocket webSocket; std::string url(\"ws://localhost:8080/\"); webSocket.setUrl(url); // Setup a callback to be fired when a message or an event (open, close, error) is received webSocket.setOnMessageCallback([](const ix::WebSocketMessagePtr& msg) { if (msg->type == ix::WebSocketMessageType::Message) { std::cout << msg->str << std::endl; } } ); // Now that our callback is setup, we can start our background thread and receive messages webSocket.start(); // Send a message to the server (default to TEXT mode) webSocket.send(\"hello world\"); Why another library? There are 2 main reasons that explain why IXWebSocket got written. First, we needed a C++ cross-platform client library, which should have few dependencies. What looked like the most solid one, websocketpp did depend on boost and this was not an option for us. Secondly, there were other available libraries with fewer dependencies (C ones), but they required calling an explicit poll routine periodically to know if a client had received data from a server, which was not elegant. We started by solving those 2 problems, then we added server websocket code, then an HTTP client, and finally a very simple HTTP server. Contributing IXWebSocket is developed on GitHub . We'd love to hear about how you use it; opening up an issue on GitHub is ok for that. If things don't work as expected, please create an issue on GitHub, or even better a pull request if you know how to fix your problem.","title":"Home"},{"location":"#introduction","text":"WebSocket is a computer communications protocol, providing full-duplex and bi-directionnal communication channels over a single TCP connection. IXWebSocket is a C++ library for client and server Websocket communication, and for client and server HTTP communication. TLS aka SSL is supported. The code is derived from easywsclient and from the Satori C SDK . It has been tested on the following platforms. macOS iOS Linux Android Windows FreeBSD","title":"Introduction"},{"location":"#example-code","text":"// Required on Windows ix::initNetSystem(); // Our websocket object ix::WebSocket webSocket; std::string url(\"ws://localhost:8080/\"); webSocket.setUrl(url); // Setup a callback to be fired when a message or an event (open, close, error) is received webSocket.setOnMessageCallback([](const ix::WebSocketMessagePtr& msg) { if (msg->type == ix::WebSocketMessageType::Message) { std::cout << msg->str << std::endl; } } ); // Now that our callback is setup, we can start our background thread and receive messages webSocket.start(); // Send a message to the server (default to TEXT mode) webSocket.send(\"hello world\");","title":"Example code"},{"location":"#why-another-library","text":"There are 2 main reasons that explain why IXWebSocket got written. First, we needed a C++ cross-platform client library, which should have few dependencies. What looked like the most solid one, websocketpp did depend on boost and this was not an option for us. Secondly, there were other available libraries with fewer dependencies (C ones), but they required calling an explicit poll routine periodically to know if a client had received data from a server, which was not elegant. We started by solving those 2 problems, then we added server websocket code, then an HTTP client, and finally a very simple HTTP server.","title":"Why another library?"},{"location":"#contributing","text":"IXWebSocket is developed on GitHub . We'd love to hear about how you use it; opening up an issue on GitHub is ok for that. If things don't work as expected, please create an issue on GitHub, or even better a pull request if you know how to fix your problem.","title":"Contributing"},{"location":"CHANGELOG/","text":"Changelog All changes to this project will be documented in this file. [8.2.6] - 2020-03-16 (cobra to sentry bot + docker) default docker file uses mbedtls + ws cobra_to_sentry pass tls options to sentryClient. [8.2.5] - 2020-03-13 (cobra client) ws cobra subscribe resubscribe at latest position after being disconnected [8.2.4] - 2020-03-13 (cobra client) can subscribe with a position [8.2.3] - 2020-03-13 (cobra client) pass the message position to the subscription data callback [8.2.2] - 2020-03-12 (openssl tls backend) Fix a hand in OpenSSL when using TLS v1.3 ... by disabling TLS v1.3 [8.2.1] - 2020-03-11 (cobra) IXCobraConfig struct hLine truncated
|
||||||
+7
-7
@@ -1,31 +1,31 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2020-02-23</lastmod>
|
<lastmod>2020-03-17</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2020-02-23</lastmod>
|
<lastmod>2020-03-17</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2020-02-23</lastmod>
|
<lastmod>2020-03-17</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2020-02-23</lastmod>
|
<lastmod>2020-03-17</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2020-02-23</lastmod>
|
<lastmod>2020-03-17</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2020-02-23</lastmod>
|
<lastmod>2020-03-17</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2020-02-23</lastmod>
|
<lastmod>2020-03-17</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url>
|
</url>
|
||||||
</urlset>
|
</urlset>
|
||||||
Binary file not shown.
+2
-1
@@ -330,7 +330,8 @@ uint32_t m = webSocket.getMaxWaitBetweenReconnectionRetries();
|
|||||||
<pre><code class="cpp">webSocket.setTLSOptions({
|
<pre><code class="cpp">webSocket.setTLSOptions({
|
||||||
.certFile = "path/to/cert/file.pem",
|
.certFile = "path/to/cert/file.pem",
|
||||||
.keyFile = "path/to/key/file.pem",
|
.keyFile = "path/to/key/file.pem",
|
||||||
.caFile = "path/to/trust/bundle/file.pem"
|
.caFile = "path/to/trust/bundle/file.pem",
|
||||||
|
.tls = true // required in server mode
|
||||||
});
|
});
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user