Deployed b89621f
with MkDocs version: 1.1.2
This commit is contained in:
parent
4ef2548888
commit
5e9779058e
3
404.html
3
404.html
@ -42,9 +42,6 @@
|
|||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="/build/" class="nav-link">Build</a>
|
<a href="/build/" class="nav-link">Build</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="navitem">
|
|
||||||
<a href="/cobra/" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="/design/" class="nav-link">Design</a>
|
<a href="/design/" class="nav-link">Design</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -42,9 +42,6 @@
|
|||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../build/" class="nav-link">Build</a>
|
<a href="../build/" class="nav-link">Build</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="navitem">
|
|
||||||
<a href="../cobra/" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../design/" class="nav-link">Design</a>
|
<a href="../design/" class="nav-link">Design</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -42,9 +42,6 @@
|
|||||||
<li class="navitem active">
|
<li class="navitem active">
|
||||||
<a href="./" class="nav-link">Build</a>
|
<a href="./" class="nav-link">Build</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="navitem">
|
|
||||||
<a href="../cobra/" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../design/" class="nav-link">Design</a>
|
<a href="../design/" class="nav-link">Design</a>
|
||||||
</li>
|
</li>
|
||||||
@ -74,7 +71,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a rel="next" href="../cobra/" class="nav-link">
|
<a rel="next" href="../design/" class="nav-link">
|
||||||
Next <i class="fa fa-arrow-right"></i>
|
Next <i class="fa fa-arrow-right"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
256
cobra/index.html
256
cobra/index.html
@ -1,256 +0,0 @@
|
|||||||
<!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.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">
|
|
||||||
|
|
||||||
<script src="../js/jquery-1.10.2.min.js" defer></script>
|
|
||||||
<script src="../js/bootstrap.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 fixed-top navbar-expand-lg navbar-dark bg-primary">
|
|
||||||
<div class="container">
|
|
||||||
<a class="navbar-brand" href="..">IXWebSocket</a>
|
|
||||||
<!-- Expander button -->
|
|
||||||
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbar-collapse">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<!-- Expanded navigation -->
|
|
||||||
<div id="navbar-collapse" class="navbar-collapse collapse">
|
|
||||||
<!-- Main navigation -->
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<li class="navitem">
|
|
||||||
<a href=".." class="nav-link">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
|
||||||
<a href="../CHANGELOG/" class="nav-link">Changelog</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
|
||||||
<a href="../build/" class="nav-link">Build</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem active">
|
|
||||||
<a href="./" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
|
||||||
<a href="../design/" class="nav-link">Design</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
|
||||||
<a href="../packages/" class="nav-link">Packages</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
|
||||||
<a href="../performance/" class="nav-link">Performance</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
|
||||||
<a href="../usage/" class="nav-link">Examples</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
|
||||||
<a href="../ws/" class="nav-link">Ws</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul class="nav navbar-nav ml-auto">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="#" class="nav-link" data-toggle="modal" data-target="#mkdocs_search_modal">
|
|
||||||
<i class="fa fa-search"></i> Search
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a rel="prev" href="../build/" class="nav-link">
|
|
||||||
<i class="fa fa-arrow-left"></i> Previous
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a rel="next" href="../design/" class="nav-link">
|
|
||||||
Next <i class="fa fa-arrow-right"></i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-3"><div class="navbar-light navbar-expand-md bs-sidebar hidden-print affix" role="complementary">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggler collapsed" data-toggle="collapse" data-target="#toc-collapse" title="Table of Contents">
|
|
||||||
<span class="fa fa-angle-down"></span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div id="toc-collapse" class="navbar-collapse collapse card bg-secondary">
|
|
||||||
<ul class="nav flex-column">
|
|
||||||
|
|
||||||
<li class="nav-item" data-level="2"><a href="#general" class="nav-link">General</a>
|
|
||||||
<ul class="nav flex-column">
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div></div>
|
|
||||||
<div class="col-md-9" role="main">
|
|
||||||
|
|
||||||
<h2 id="general">General</h2>
|
|
||||||
<p><a href="https://github.com/machinezone/cobra">cobra</a> 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 class="language-bash">$ cd <ixwebsocket-top-level-folder>/ixsnake/ixsnake
|
|
||||||
$ ws snake
|
|
||||||
{
|
|
||||||
"apps": {
|
|
||||||
"FC2F10139A2BAc53BB72D9db967b024f": {
|
|
||||||
"roles": {
|
|
||||||
"_sub": {
|
|
||||||
"secret": "66B1dA3ED5fA074EB5AE84Dd8CE3b5ba"
|
|
||||||
},
|
|
||||||
"_pub": {
|
|
||||||
"secret": "1c04DB8fFe76A4EeFE3E318C72d771db"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
redis host: 127.0.0.1
|
|
||||||
redis password:
|
|
||||||
redis port: 6379
|
|
||||||
</code></pre>
|
|
||||||
<h3 id="publisher">Publisher</h3>
|
|
||||||
<pre><code class="language-bash">$ cd <ixwebsocket-top-level-folder>/ws
|
|
||||||
$ 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 class="language-bash">$ 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
|
|
||||||
{"baz":123,"foo":"bar"}
|
|
||||||
|
|
||||||
#messages 1 msg/s 1
|
|
||||||
#messages 1 msg/s 0
|
|
||||||
#messages 1 msg/s 0
|
|
||||||
{"baz":123,"foo":"bar"}
|
|
||||||
|
|
||||||
{"baz":123,"foo":"bar"}
|
|
||||||
|
|
||||||
#messages 3 msg/s 2
|
|
||||||
#messages 3 msg/s 0
|
|
||||||
{"baz":123,"foo":"bar"}
|
|
||||||
|
|
||||||
#messages 4 msg/s 1
|
|
||||||
^C
|
|
||||||
</code></pre></div>
|
|
||||||
</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="searchModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h4 class="modal-title" id="searchModalLabel">Search</h4>
|
|
||||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<p>
|
|
||||||
From here you can search these documents. Enter
|
|
||||||
your search terms below.
|
|
||||||
</p>
|
|
||||||
<form>
|
|
||||||
<div class="form-group">
|
|
||||||
<input type="search" 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="keyboardModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
|
|
||||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
||||||
</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>
|
|
@ -42,9 +42,6 @@
|
|||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../build/" class="nav-link">Build</a>
|
<a href="../build/" class="nav-link">Build</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="navitem">
|
|
||||||
<a href="../cobra/" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem active">
|
<li class="navitem active">
|
||||||
<a href="./" class="nav-link">Design</a>
|
<a href="./" class="nav-link">Design</a>
|
||||||
</li>
|
</li>
|
||||||
@ -69,7 +66,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a rel="prev" href="../cobra/" class="nav-link">
|
<a rel="prev" href="../build/" class="nav-link">
|
||||||
<i class="fa fa-arrow-left"></i> Previous
|
<i class="fa fa-arrow-left"></i> Previous
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -42,9 +42,6 @@
|
|||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="build/" class="nav-link">Build</a>
|
<a href="build/" class="nav-link">Build</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="navitem">
|
|
||||||
<a href="cobra/" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="design/" class="nav-link">Design</a>
|
<a href="design/" class="nav-link">Design</a>
|
||||||
</li>
|
</li>
|
||||||
@ -264,5 +261,5 @@ webSocket.send("hello world");
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
MkDocs version : 1.1.2
|
MkDocs version : 1.1.2
|
||||||
Build Date UTC : 2020-12-25 23:18:29.526184+00:00
|
Build Date UTC : 2020-12-25 23:33:17.740421+00:00
|
||||||
-->
|
-->
|
||||||
|
@ -42,9 +42,6 @@
|
|||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../build/" class="nav-link">Build</a>
|
<a href="../build/" class="nav-link">Build</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="navitem">
|
|
||||||
<a href="../cobra/" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../design/" class="nav-link">Design</a>
|
<a href="../design/" class="nav-link">Design</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -42,9 +42,6 @@
|
|||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../build/" class="nav-link">Build</a>
|
<a href="../build/" class="nav-link">Build</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="navitem">
|
|
||||||
<a href="../cobra/" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../design/" class="nav-link">Design</a>
|
<a href="../design/" class="nav-link">Design</a>
|
||||||
</li>
|
</li>
|
||||||
|
File diff suppressed because one or more lines are too long
@ -31,9 +31,5 @@
|
|||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2020-12-25</lastmod>
|
<lastmod>2020-12-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
|
||||||
<loc>None</loc>
|
|
||||||
<lastmod>2020-12-25</lastmod>
|
|
||||||
<changefreq>daily</changefreq>
|
|
||||||
</url>
|
</url>
|
||||||
</urlset>
|
</urlset>
|
BIN
sitemap.xml.gz
BIN
sitemap.xml.gz
Binary file not shown.
@ -42,9 +42,6 @@
|
|||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../build/" class="nav-link">Build</a>
|
<a href="../build/" class="nav-link">Build</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="navitem">
|
|
||||||
<a href="../cobra/" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../design/" class="nav-link">Design</a>
|
<a href="../design/" class="nav-link">Design</a>
|
||||||
</li>
|
</li>
|
||||||
|
134
ws/index.html
134
ws/index.html
@ -42,9 +42,6 @@
|
|||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../build/" class="nav-link">Build</a>
|
<a href="../build/" class="nav-link">Build</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="navitem">
|
|
||||||
<a href="../cobra/" class="nav-link">Cobra</a>
|
|
||||||
</li>
|
|
||||||
<li class="navitem">
|
<li class="navitem">
|
||||||
<a href="../design/" class="nav-link">Design</a>
|
<a href="../design/" class="nav-link">Design</a>
|
||||||
</li>
|
</li>
|
||||||
@ -130,11 +127,6 @@
|
|||||||
<ul class="nav flex-column">
|
<ul class="nav flex-column">
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item" data-level="2"><a href="#cobra-client-and-server" class="nav-link">Cobra client and server</a>
|
|
||||||
<ul class="nav flex-column">
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div></div>
|
</div></div>
|
||||||
@ -158,13 +150,6 @@ Subcommands:
|
|||||||
broadcast_server Broadcasting server
|
broadcast_server Broadcasting server
|
||||||
ping Ping pong
|
ping Ping pong
|
||||||
curl HTTP Client
|
curl HTTP Client
|
||||||
redis_publish Redis publisher
|
|
||||||
redis_subscribe Redis subscriber
|
|
||||||
cobra_subscribe Cobra subscriber
|
|
||||||
cobra_publish Cobra publisher
|
|
||||||
cobra_to_statsd Cobra to statsd
|
|
||||||
cobra_to_sentry Cobra to sentry
|
|
||||||
snake Snake server
|
|
||||||
httpd HTTP server
|
httpd HTTP server
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<h2 id="curl">curl</h2>
|
<h2 id="curl">curl</h2>
|
||||||
@ -370,12 +355,8 @@ Listening on 127.0.0.1:8008
|
|||||||
<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>
|
<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>
|
||||||
<p>You can also use a more complex setup if you want to redirect to different websocket servers based on the hostname your client is trying to connect to. If you have multiple CNAME aliases that point to the same server.</p>
|
<p>You can also use a more complex setup if you want to redirect to different websocket servers based on the hostname your client is trying to connect to. If you have multiple CNAME aliases that point to the same server.</p>
|
||||||
<p>A JSON config file is used to express that mapping ; here connecting to echo.jeanserge.com will proxy the client to ws://localhost:8008 on the local machine (which actually runs ws echo_server), while connecting to bavarde.jeanserge.com will proxy the client to ws://localhost:5678 where a cobra python server is running. As a side note you will need a wildcard SSL certificate if you want to have SSL enabled on that machine.</p>
|
<p>A JSON config file is used to express that mapping ; here connecting to echo.jeanserge.com will proxy the client to ws://localhost:8008 on the local machine (which actually runs ws echo_server), while connecting to bavarde.jeanserge.com will proxy the client to ws://localhost:5678 where a cobra python server is running. As a side note you will need a wildcard SSL certificate if you want to have SSL enabled on that machine.</p>
|
||||||
<pre><code class="language-json">{
|
<pre><code>echo.jeanserge.com=ws://localhost:8008
|
||||||
"remote_urls": {
|
bavarde.jeanserge.com=ws://localhost:5678
|
||||||
"echo.jeanserge.com": "ws://localhost:8008",
|
|
||||||
"bavarde.jeanserge.com": "ws://localhost:5678"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<p>The --config_path option is required to instruct ws proxy_server to read that file.</p>
|
<p>The --config_path option is required to instruct ws proxy_server to read that file.</p>
|
||||||
<pre><code>ws proxy_server --config_path proxyConfig.json --port 8765
|
<pre><code>ws proxy_server --config_path proxyConfig.json --port 8765
|
||||||
@ -412,116 +393,7 @@ Options:
|
|||||||
--compress Enable gzip compression
|
--compress Enable gzip compression
|
||||||
--connect-timeout INT Connection timeout
|
--connect-timeout INT Connection timeout
|
||||||
--transfer-timeout INT Transfer timeout
|
--transfer-timeout INT Transfer timeout
|
||||||
</code></pre>
|
</code></pre></div>
|
||||||
<h2 id="cobra-client-and-server">Cobra client and server</h2>
|
|
||||||
<p><a href="https://github.com/machinezone/cobra">cobra</a> is a real time messenging server. ws has several sub-command to interact with cobra. There is also a minimal cobra compatible server named snake available.</p>
|
|
||||||
<p>Below are examples on running a snake server and clients with TLS enabled (the server only works with the OpenSSL and the Mbed TLS backend for now).</p>
|
|
||||||
<p>First, generate certificates.</p>
|
|
||||||
<pre><code>$ cd /path/to/IXWebSocket
|
|
||||||
$ cd ixsnake/ixsnake
|
|
||||||
$ bash ../../ws/generate_certs.sh
|
|
||||||
Generating RSA private key, 2048 bit long modulus
|
|
||||||
.....+++
|
|
||||||
.................+++
|
|
||||||
e is 65537 (0x10001)
|
|
||||||
generated ./.certs/trusted-ca-key.pem
|
|
||||||
generated ./.certs/trusted-ca-crt.pem
|
|
||||||
Generating RSA private key, 2048 bit long modulus
|
|
||||||
..+++
|
|
||||||
.......................................+++
|
|
||||||
e is 65537 (0x10001)
|
|
||||||
generated ./.certs/trusted-server-key.pem
|
|
||||||
Signature ok
|
|
||||||
subject=/O=machinezone/O=IXWebSocket/CN=trusted-server
|
|
||||||
Getting CA Private Key
|
|
||||||
generated ./.certs/trusted-server-crt.pem
|
|
||||||
Generating RSA private key, 2048 bit long modulus
|
|
||||||
...................................+++
|
|
||||||
..................................................+++
|
|
||||||
e is 65537 (0x10001)
|
|
||||||
generated ./.certs/trusted-client-key.pem
|
|
||||||
Signature ok
|
|
||||||
subject=/O=machinezone/O=IXWebSocket/CN=trusted-client
|
|
||||||
Getting CA Private Key
|
|
||||||
generated ./.certs/trusted-client-crt.pem
|
|
||||||
Generating RSA private key, 2048 bit long modulus
|
|
||||||
..............+++
|
|
||||||
.......................................+++
|
|
||||||
e is 65537 (0x10001)
|
|
||||||
generated ./.certs/untrusted-ca-key.pem
|
|
||||||
generated ./.certs/untrusted-ca-crt.pem
|
|
||||||
Generating RSA private key, 2048 bit long modulus
|
|
||||||
..........+++
|
|
||||||
................................................+++
|
|
||||||
e is 65537 (0x10001)
|
|
||||||
generated ./.certs/untrusted-client-key.pem
|
|
||||||
Signature ok
|
|
||||||
subject=/O=machinezone/O=IXWebSocket/CN=untrusted-client
|
|
||||||
Getting CA Private Key
|
|
||||||
generated ./.certs/untrusted-client-crt.pem
|
|
||||||
Generating RSA private key, 2048 bit long modulus
|
|
||||||
.....................................................................................+++
|
|
||||||
...........+++
|
|
||||||
e is 65537 (0x10001)
|
|
||||||
generated ./.certs/selfsigned-client-key.pem
|
|
||||||
Signature ok
|
|
||||||
subject=/O=machinezone/O=IXWebSocket/CN=selfsigned-client
|
|
||||||
Getting Private key
|
|
||||||
generated ./.certs/selfsigned-client-crt.pem
|
|
||||||
</code></pre>
|
|
||||||
<p>Now run the snake server.</p>
|
|
||||||
<pre><code>$ export certs=.certs
|
|
||||||
$ ws snake --tls --port 8765 --cert-file ${certs}/trusted-server-crt.pem --key-file ${certs}/trusted-server-key.pem --ca-file ${certs}/trusted-ca-crt.pem
|
|
||||||
{
|
|
||||||
"apps": {
|
|
||||||
"FC2F10139A2BAc53BB72D9db967b024f": {
|
|
||||||
"roles": {
|
|
||||||
"_sub": {
|
|
||||||
"secret": "66B1dA3ED5fA074EB5AE84Dd8CE3b5ba"
|
|
||||||
},
|
|
||||||
"_pub": {
|
|
||||||
"secret": "1c04DB8fFe76A4EeFE3E318C72d771db"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
redis host: 127.0.0.1
|
|
||||||
redis password:
|
|
||||||
redis port: 6379
|
|
||||||
</code></pre>
|
|
||||||
<p>As a new connection comes in, such output should be printed</p>
|
|
||||||
<pre><code>[2019-12-19 20:27:19.724] [info] New connection
|
|
||||||
id: 0
|
|
||||||
Uri: /v2?appkey=_health
|
|
||||||
Headers:
|
|
||||||
Connection: Upgrade
|
|
||||||
Host: 127.0.0.1:8765
|
|
||||||
Sec-WebSocket-Extensions: permessage-deflate; server_max_window_bits=15; client_max_window_bits=15
|
|
||||||
Sec-WebSocket-Key: d747B0fE61Db73f7Eh47c0==
|
|
||||||
Sec-WebSocket-Protocol: json
|
|
||||||
Sec-WebSocket-Version: 13
|
|
||||||
Upgrade: websocket
|
|
||||||
User-Agent: ixwebsocket/7.5.8 macos ssl/OpenSSL OpenSSL 1.0.2q 20 Nov 2018 zlib 1.2.11
|
|
||||||
</code></pre>
|
|
||||||
<p>To connect and publish a message, do:</p>
|
|
||||||
<pre><code>$ export certs=.certs
|
|
||||||
$ cd /path/to/ws/folder
|
|
||||||
$ ls cobraMetricsSample.json
|
|
||||||
cobraMetricsSample.json
|
|
||||||
$ ws cobra_publish --endpoint wss://127.0.0.1:8765 --appkey FC2F10139A2BAc53BB72D9db967b024f --rolename _pub --rolesecret 1c04DB8fFe76A4EeFE3E318C72d771db --channel foo --cert-file ${certs}/trusted-client-crt.pem --key-file ${certs}/trusted-client-key.pem --ca-file ${certs}/trusted-ca-crt.pem cobraMetricsSample.json
|
|
||||||
[2019-12-19 20:46:42.656] [info] Publisher connected
|
|
||||||
[2019-12-19 20:46:42.657] [info] Connection: Upgrade
|
|
||||||
[2019-12-19 20:46:42.657] [info] Sec-WebSocket-Accept: rs99IFThoBrhSg+k8G4ixH9yaq4=
|
|
||||||
[2019-12-19 20:46:42.657] [info] Sec-WebSocket-Extensions: permessage-deflate; server_max_window_bits=15; client_max_window_bits=15
|
|
||||||
[2019-12-19 20:46:42.657] [info] Server: ixwebsocket/7.5.8 macos ssl/OpenSSL OpenSSL 1.0.2q 20 Nov 2018 zlib 1.2.11
|
|
||||||
[2019-12-19 20:46:42.657] [info] Upgrade: websocket
|
|
||||||
[2019-12-19 20:46:42.658] [info] Publisher authenticated
|
|
||||||
[2019-12-19 20:46:42.658] [info] Published msg 3
|
|
||||||
[2019-12-19 20:46:42.659] [info] Published message id 3 acked
|
|
||||||
</code></pre>
|
|
||||||
<p>To use OpenSSL on macOS, compile with <code>make ws_openssl</code>. First you will have to install OpenSSL libraries, which can be done with Homebrew. Use <code>make ws_mbedtls</code> accordingly to use MbedTLS.</p></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user