Deployed 6054dd4 with MkDocs version: 1.0.4

This commit is contained in:
Benjamin Sergeant committed 2019-11-27 09:10:09 -08:00
1 parent f9ca44b474
commit f0600152f7
11 files changed
+321 -10

No files matched your search

+3
View File
@@ -55,6 +55,9 @@
<li > <li >
<a href="/build/">Build</a> <a href="/build/">Build</a>
</li> </li>
<li >
<a href="/cobra/">Cobra</a>
</li>
<li > <li >
<a href="/design/">Design</a> <a href="/design/">Design</a>
</li> </li>
+29
View File
@@ -55,6 +55,9 @@
<li > <li >
<a href="../build/">Build</a> <a href="../build/">Build</a>
</li> </li>
<li >
<a href="../cobra/">Cobra</a>
</li>
<li > <li >
<a href="../design/">Design</a> <a href="../design/">Design</a>
</li> </li>
@@ -91,6 +94,11 @@
<div class="col-md-3"><div class="bs-sidebar hidden-print affix well" role="complementary"> <div class="col-md-3"><div class="bs-sidebar hidden-print affix well" role="complementary">
<ul class="nav bs-sidenav"> <ul class="nav bs-sidenav">
<li class="main active"><a href="#changelog">Changelog</a></li> <li class="main active"><a href="#changelog">Changelog</a></li>
<li><a href="#740-2019-11-25">[7.4.0] - 2019-11-25</a></li>
<li><a href="#735-2019-11-20">[7.3.5] - 2019-11-20</a></li>
<li><a href="#734-2019-11-20">[7.3.4] - 2019-11-20</a></li>
<li><a href="#731-2019-11-16">[7.3.1] - 2019-11-16</a></li>
<li><a href="#730-2019-11-15">[7.3.0] - 2019-11-15</a></li>
<li><a href="#722-2019-11-01">[7.2.2] - 2019-11-01</a></li> <li><a href="#722-2019-11-01">[7.2.2] - 2019-11-01</a></li>
<li><a href="#721-2019-10-26">[7.2.1] - 2019-10-26</a></li> <li><a href="#721-2019-10-26">[7.2.1] - 2019-10-26</a></li>
<li><a href="#720-2019-10-24">[7.2.0] - 2019-10-24</a></li> <li><a href="#720-2019-10-24">[7.2.0] - 2019-10-24</a></li>
@@ -143,6 +151,27 @@
<h1 id="changelog">Changelog</h1> <h1 id="changelog">Changelog</h1>
<p>All notable changes to this project will be documented in this file.</p> <p>All notable changes to this project will be documented in this file.</p>
<h2 id="740-2019-11-25">[7.4.0] - 2019-11-25</h2>
<ul>
<li>(http client) Add support for multipart HTTP POST upload</li>
<li>(ixsentry) Add support for uploading a minidump to sentry</li>
</ul>
<h2 id="735-2019-11-20">[7.3.5] - 2019-11-20</h2>
<ul>
<li>On Darwin SSL, add ability to skip peer verification.</li>
</ul>
<h2 id="734-2019-11-20">[7.3.4] - 2019-11-20</h2>
<ul>
<li>32-bits compile fix, courtesy of @fcojavmc</li>
</ul>
<h2 id="731-2019-11-16">[7.3.1] - 2019-11-16</h2>
<ul>
<li>ws proxy_server / remote server close not forwarded to the client</li>
</ul>
<h2 id="730-2019-11-15">[7.3.0] - 2019-11-15</h2>
<ul>
<li>New ws command: <code>ws proxy_server</code>.</li>
</ul>
<h2 id="722-2019-11-01">[7.2.2] - 2019-11-01</h2> <h2 id="722-2019-11-01">[7.2.2] - 2019-11-01</h2>
<ul> <ul>
<li>Tag a release + minor reformating.</li> <li>Tag a release + minor reformating.</li>
+4 -1
View File
@@ -55,6 +55,9 @@
<li class="active"> <li class="active">
<a href="./">Build</a> <a href="./">Build</a>
</li> </li>
<li >
<a href="../cobra/">Cobra</a>
</li>
<li > <li >
<a href="../design/">Design</a> <a href="../design/">Design</a>
</li> </li>
@@ -78,7 +81,7 @@
</a> </a>
</li> </li>
<li > <li >
<a rel="prev" href="../design/"> <a rel="prev" href="../cobra/">
Next <i class="fa fa-arrow-right"></i> Next <i class="fa fa-arrow-right"></i>
</a> </a>
</li> </li>
+252
View File
@@ -0,0 +1,252 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="../img/favicon.ico">
<title>Cobra - IXWebSocket</title>
<link href="../css/bootstrap-custom.min.css" rel="stylesheet">
<link href="../css/font-awesome.min.css" rel="stylesheet">
<link href="../css/base.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="../js/jquery-1.10.2.min.js" defer></script>
<script src="../js/bootstrap-3.0.3.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="..">IXWebSocket</a>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li >
<a href="..">Home</a>
</li>
<li >
<a href="../CHANGELOG/">Changelog</a>
</li>
<li >
<a href="../build/">Build</a>
</li>
<li class="active">
<a href="./">Cobra</a>
</li>
<li >
<a href="../design/">Design</a>
</li>
<li >
<a href="../usage/">Examples</a>
</li>
<li >
<a href="../ws/">Ws</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#" data-toggle="modal" data-target="#mkdocs_search_modal">
<i class="fa fa-search"></i> Search
</a>
</li>
<li >
<a rel="next" href="../build/">
<i class="fa fa-arrow-left"></i> Previous
</a>
</li>
<li >
<a rel="prev" href="../design/">
Next <i class="fa fa-arrow-right"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="col-md-3"><div class="bs-sidebar hidden-print affix well" role="complementary">
<ul class="nav bs-sidenav">
<li class="main active"><a href="#general">General</a></li>
<li><a href="#server">Server</a></li>
<li><a href="#publisher">Publisher</a></li>
<li><a href="#subscriber">Subscriber</a></li>
</ul>
</div></div>
<div class="col-md-9" role="main">
<h2 id="general">General</h2>
<p>cobra is a real time messaging server. The <code>ws</code> utility can run a cobra server (named snake), and has client to publish and subscribe to a cobra server.</p>
<p>Bring up 3 terminals and run a server, a publisher and a subscriber in each one. As you publish data you should see it being received by the subscriber. You can run <code>redis-cli MONITOR</code> too to see how redis is being used.</p>
<h3 id="server">Server</h3>
<p>You will need to have a redis server running locally. To run the server:</p>
<pre><code>$ cd &lt;ixwebsocket-top-level-folder&gt;/ixsnake/ixsnake
$ ws snake
{
&quot;apps&quot;: {
&quot;FC2F10139A2BAc53BB72D9db967b024f&quot;: {
&quot;roles&quot;: {
&quot;_sub&quot;: {
&quot;secret&quot;: &quot;66B1dA3ED5fA074EB5AE84Dd8CE3b5ba&quot;
},
&quot;_pub&quot;: {
&quot;secret&quot;: &quot;1c04DB8fFe76A4EeFE3E318C72d771db&quot;
}
}
}
}
}
redis host: 127.0.0.1
redis password:
redis port: 6379
</code></pre>
<h3 id="publisher">Publisher</h3>
<pre><code>$ ws cobra_publish --appkey FC2F10139A2BAc53BB72D9db967b024f --endpoint ws://127.0.0.1:8008 --rolename _pub --rolesecret 1c04DB8fFe76A4EeFE3E318C72d771db test_channel cobraMetricsSample.json
[2019-11-27 09:06:12.980] [info] Publisher connected
[2019-11-27 09:06:12.980] [info] Connection: Upgrade
[2019-11-27 09:06:12.980] [info] Sec-WebSocket-Accept: zTtQKMKbvwjdivURplYXwCVUCWM=
[2019-11-27 09:06:12.980] [info] Sec-WebSocket-Extensions: permessage-deflate; server_max_window_bits=15; client_max_window_bits=15
[2019-11-27 09:06:12.980] [info] Server: ixwebsocket/7.4.0 macos ssl/DarwinSSL zlib 1.2.11
[2019-11-27 09:06:12.980] [info] Upgrade: websocket
[2019-11-27 09:06:12.982] [info] Publisher authenticated
[2019-11-27 09:06:12.982] [info] Published msg 3
[2019-11-27 09:06:12.982] [info] Published message id 3 acked
</code></pre>
<h3 id="subscriber">Subscriber</h3>
<pre><code>$ ws cobra_subscribe --appkey FC2F10139A2BAc53BB72D9db967b024f --endpoint ws://127.0.0.1:8008 --rolename _pub --rolesecret 1c04DB8fFe76A4EeFE3E318C72d771db test_channel
#messages 0 msg/s 0
[2019-11-27 09:07:39.341] [info] Subscriber connected
[2019-11-27 09:07:39.341] [info] Connection: Upgrade
[2019-11-27 09:07:39.341] [info] Sec-WebSocket-Accept: 9vkQWofz49qMCUlTSptCCwHWm+Q=
[2019-11-27 09:07:39.341] [info] Sec-WebSocket-Extensions: permessage-deflate; server_max_window_bits=15; client_max_window_bits=15
[2019-11-27 09:07:39.341] [info] Server: ixwebsocket/7.4.0 macos ssl/DarwinSSL zlib 1.2.11
[2019-11-27 09:07:39.341] [info] Upgrade: websocket
[2019-11-27 09:07:39.342] [info] Subscriber authenticated
[2019-11-27 09:07:39.345] [info] Subscriber: subscribed to channel test_channel
#messages 0 msg/s 0
#messages 0 msg/s 0
#messages 0 msg/s 0
{&quot;baz&quot;:123,&quot;foo&quot;:&quot;bar&quot;}
#messages 1 msg/s 1
#messages 1 msg/s 0
#messages 1 msg/s 0
{&quot;baz&quot;:123,&quot;foo&quot;:&quot;bar&quot;}
{&quot;baz&quot;:123,&quot;foo&quot;:&quot;bar&quot;}
#messages 3 msg/s 2
#messages 3 msg/s 0
{&quot;baz&quot;:123,&quot;foo&quot;:&quot;bar&quot;}
#messages 4 msg/s 1
^C
</code></pre></div>
</div>
<footer class="col-md-12">
<hr>
<p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
</footer>
<script>
var base_url = "..",
shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
</script>
<script src="../js/base.js" defer></script>
<script src="../search/main.js" defer></script>
<div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="Search Modal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="exampleModalLabel">Search</h4>
</div>
<div class="modal-body">
<p>
From here you can search these documents. Enter
your search terms below.
</p>
<form role="form">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search..." id="mkdocs-search-query" title="Type search term here">
</div>
</form>
<div id="mkdocs-search-results"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="Keyboard Shortcuts Modal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="exampleModalLabel">Keyboard Shortcuts</h4>
</div>
<div class="modal-body">
<table class="table">
<thead>
<tr>
<th style="width: 20%;">Keys</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td class="help shortcut"><kbd>?</kbd></td>
<td>Open this help</td>
</tr>
<tr>
<td class="next shortcut"><kbd>n</kbd></td>
<td>Next page</td>
</tr>
<tr>
<td class="prev shortcut"><kbd>p</kbd></td>
<td>Previous page</td>
</tr>
<tr>
<td class="search shortcut"><kbd>s</kbd></td>
<td>Search</td>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</body>
</html>
+4 -1
View File
@@ -55,6 +55,9 @@
<li > <li >
<a href="../build/">Build</a> <a href="../build/">Build</a>
</li> </li>
<li >
<a href="../cobra/">Cobra</a>
</li>
<li class="active"> <li class="active">
<a href="./">Design</a> <a href="./">Design</a>
</li> </li>
@@ -73,7 +76,7 @@
</a> </a>
</li> </li>
<li > <li >
<a rel="next" href="../build/"> <a rel="next" href="../cobra/">
<i class="fa fa-arrow-left"></i> Previous <i class="fa fa-arrow-left"></i> Previous
</a> </a>
</li> </li>
+4 -1
View File
@@ -55,6 +55,9 @@
<li > <li >
<a href="build/">Build</a> <a href="build/">Build</a>
</li> </li>
<li >
<a href="cobra/">Cobra</a>
</li>
<li > <li >
<a href="design/">Design</a> <a href="design/">Design</a>
</li> </li>
@@ -223,5 +226,5 @@ webSocket.send(&quot;hello world&quot;);
<!-- <!--
MkDocs version : 1.0.4 MkDocs version : 1.0.4
Build Date UTC : 2019-11-13 22:27:15 Build Date UTC : 2019-11-27 17:10:08
--> -->
+1 -1
View File
@@ -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 in github is ok for that. If things don't work as expected, please create an issue in 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 in github is ok for that. If things don't work as expected, please create an issue in github, or even better a pull request if you know how to fix your problem.","title":"Contributing"},{"location":"CHANGELOG/","text":"Changelog All notable changes to this project will be documented in this file. [7.2.2] - 2019-11-01 Tag a release + minor reformating. [7.2.1] - 2019-10-26 Add unittest to IXSentryClient to lua backtrace parsing code [7.2.0] - 2019-10-24 Add cobra_metrics_to_redis sub-command to create streams for each cobra metric event being received. [7.1.0] - 2019-10-13 Add client support for websocket subprotocol. Look for the new addSubProtocol method for details. [7.0.0] - 2019-10-01 TLS support in server code, only implemented for the OpenSSL SSL backend for now. [6.3.4] - 2019-09-30 all ws subcommands propagate tls options to servers (unimplementLine 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 in github is ok for that. If things don't work as expected, please create an issue in 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 in github is ok for that. If things don't work as expected, please create an issue in github, or even better a pull request if you know how to fix your problem.","title":"Contributing"},{"location":"CHANGELOG/","text":"Changelog All notable changes to this project will be documented in this file. [7.4.0] - 2019-11-25 (http client) Add support for multipart HTTP POST upload (ixsentry) Add support for uploading a minidump to sentry [7.3.5] - 2019-11-20 On Darwin SSL, add ability to skip peer verification. [7.3.4] - 2019-11-20 32-bits compile fix, courtesy of @fcojavmc [7.3.1] - 2019-11-16 ws proxy_server / remote server close not forwarded to the client [7.3.0] - 2019-11-15 New ws command: ws proxy_server . [7.2.2] - 2019-11-01 Tag a release + minor reformating. [7.2.1] - 2019-10-26 Add unittest to IXSentryClient to lua backtrace parsing code [7.2.0] - 20Line truncated
+11 -6
View File
@@ -2,32 +2,37 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>None</loc> <loc>None</loc>
<lastmod>2019-11-13</lastmod> <lastmod>2019-11-27</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>None</loc> <loc>None</loc>
<lastmod>2019-11-13</lastmod> <lastmod>2019-11-27</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>None</loc> <loc>None</loc>
<lastmod>2019-11-13</lastmod> <lastmod>2019-11-27</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>None</loc> <loc>None</loc>
<lastmod>2019-11-13</lastmod> <lastmod>2019-11-27</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>None</loc> <loc>None</loc>
<lastmod>2019-11-13</lastmod> <lastmod>2019-11-27</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>None</loc> <loc>None</loc>
<lastmod>2019-11-13</lastmod> <lastmod>2019-11-27</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2019-11-27</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
</urlset> </urlset>
BIN
View File
Binary file not shown.
+3
View File
@@ -55,6 +55,9 @@
<li > <li >
<a href="../build/">Build</a> <a href="../build/">Build</a>
</li> </li>
<li >
<a href="../cobra/">Cobra</a>
</li>
<li > <li >
<a href="../design/">Design</a> <a href="../design/">Design</a>
</li> </li>
+10
View File
@@ -55,6 +55,9 @@
<li > <li >
<a href="../build/">Build</a> <a href="../build/">Build</a>
</li> </li>
<li >
<a href="../cobra/">Cobra</a>
</li>
<li > <li >
<a href="../design/">Design</a> <a href="../design/">Design</a>
</li> </li>
@@ -93,6 +96,7 @@
<li class="main active"><a href="#general">General</a></li> <li class="main active"><a href="#general">General</a></li>
<li class="main "><a href="#curl">curl</a></li> <li class="main "><a href="#curl">curl</a></li>
<li class="main "><a href="#connect">connect</a></li> <li class="main "><a href="#connect">connect</a></li>
<li class="main "><a href="#websocket-proxy">Websocket proxy</a></li>
<li class="main "><a href="#file-transfer">File transfer</a></li> <li class="main "><a href="#file-transfer">File transfer</a></li>
<li class="main "><a href="#http-client">HTTP Client</a></li> <li class="main "><a href="#http-client">HTTP Client</a></li>
<li class="main "><a href="#cobra-client">Cobra Client</a></li> <li class="main "><a href="#cobra-client">Cobra Client</a></li>
@@ -282,6 +286,12 @@ Server: Python/3.7 websockets/8.0.2
Upgrade: websocket Upgrade: websocket
</code></pre> </code></pre>
<h2 id="websocket-proxy">Websocket proxy</h2>
<pre><code>ws proxy_server --remote_host ws://127.0.0.1:9000 -v
Listening on 127.0.0.1:8008
</code></pre>
<p>If you connect to ws://127.0.0.1:8008, the proxy will connect to ws://127.0.0.1:9000 and pass all traffic to this server.</p>
<h2 id="file-transfer">File transfer</h2> <h2 id="file-transfer">File transfer</h2>
<pre><code># Start transfer server, which is just a broadcast server at this point <pre><code># Start transfer server, which is just a broadcast server at this point
ws transfer # running on port 8080. ws transfer # running on port 8080.