Better reconnect logic.
This commit is contained in:
parent
dd969a4b31
commit
8ae2c89490
|
@ -17,13 +17,15 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container">
|
<div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container">
|
||||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="http://github.com/tonyg/ocamlmsg/">Ocamlmsg</a><div class="nav-collapse">
|
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="/">Ocamlmsg</a><div class="nav-collapse">
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li class="btn-danger"><a href="about.html">About</a></li>
|
|
||||||
<li><a href="/">Main</a></li>
|
<li><a href="/">Main</a></li>
|
||||||
<li><a href="/nodes.html">Nodes</a></li>
|
<li><a href="/nodes.html">Nodes</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="nav pull-right"><li><a id="server_status_message_container"><span id="server_status_message">Connected</span></a></li></ul>
|
<ul class="nav pull-right">
|
||||||
|
<li><a id="server_status_message_container"><span id="server_status_message">Connected</span></a></li>
|
||||||
|
<li><a href="about.html">About</a></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div></div></div>
|
</div></div></div>
|
||||||
<div class="container"><body>
|
<div class="container"><body>
|
||||||
|
@ -33,6 +35,11 @@
|
||||||
Ocamlmsg is a prototype of a sensible recursive message broker.
|
Ocamlmsg is a prototype of a sensible recursive message broker.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<h2>Homepage</h2>
|
||||||
|
<p>
|
||||||
|
The project is currently hosted on github at <a href="http://github.com/tonyg/ocamlmsg/">http://github.com/tonyg/ocamlmsg/</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h2>Copyright & Licence</h2>
|
<h2>Copyright & Licence</h2>
|
||||||
<p>
|
<p>
|
||||||
Ocamlmsg is Copyright (C) 2012 Tony Garnock-Jones.
|
Ocamlmsg is Copyright (C) 2012 Tony Garnock-Jones.
|
||||||
|
@ -66,6 +73,6 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</body></div>
|
</body></div>
|
||||||
<script src="bootstrap/js/bootstrap-transition.js"></script><script src="bootstrap/js/bootstrap-alert.js"></script><script src="bootstrap/js/bootstrap-modal.js"></script><script src="bootstrap/js/bootstrap-dropdown.js"></script><script src="bootstrap/js/bootstrap-scrollspy.js"></script><script src="bootstrap/js/bootstrap-tab.js"></script><script src="bootstrap/js/bootstrap-tooltip.js"></script><script src="bootstrap/js/bootstrap-popover.js"></script><script src="bootstrap/js/bootstrap-button.js"></script><script src="bootstrap/js/bootstrap-collapse.js"></script><script src="bootstrap/js/bootstrap-carousel.js"></script><script src="bootstrap/js/bootstrap-typeahead.js"></script>
|
<script>Ocamlmsg.install_tap({});</script><script src="bootstrap/js/bootstrap-transition.js"></script><script src="bootstrap/js/bootstrap-alert.js"></script><script src="bootstrap/js/bootstrap-modal.js"></script><script src="bootstrap/js/bootstrap-dropdown.js"></script><script src="bootstrap/js/bootstrap-scrollspy.js"></script><script src="bootstrap/js/bootstrap-tab.js"></script><script src="bootstrap/js/bootstrap-tooltip.js"></script><script src="bootstrap/js/bootstrap-popover.js"></script><script src="bootstrap/js/bootstrap-button.js"></script><script src="bootstrap/js/bootstrap-collapse.js"></script><script src="bootstrap/js/bootstrap-carousel.js"></script><script src="bootstrap/js/bootstrap-typeahead.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -39,10 +39,9 @@
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="brand" href="http://github.com/tonyg/ocamlmsg/">Ocamlmsg</a>
|
<a class="brand" href="/">Ocamlmsg</a>
|
||||||
<div class="nav-collapse">
|
<div class="nav-collapse">
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li class="btn-danger"><a href="about.html">About</a></li>
|
|
||||||
<xsl:for-each select="document('nav.xml')/navitems/navitem">
|
<xsl:for-each select="document('nav.xml')/navitems/navitem">
|
||||||
<li>
|
<li>
|
||||||
<xsl:if test="@id = $active-section">
|
<xsl:if test="@id = $active-section">
|
||||||
|
@ -54,6 +53,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="nav pull-right">
|
<ul class="nav pull-right">
|
||||||
<li><a id="server_status_message_container"><span id="server_status_message">Connected</span></a></li>
|
<li><a id="server_status_message_container"><span id="server_status_message">Connected</span></a></li>
|
||||||
|
<li><a href="about.html">About</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -65,6 +65,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<xsl:copy-of select="script" />
|
<xsl:copy-of select="script" />
|
||||||
|
<script>Ocamlmsg.install_tap({});</script>
|
||||||
|
|
||||||
<script src="bootstrap/js/bootstrap-transition.js"></script>
|
<script src="bootstrap/js/bootstrap-transition.js"></script>
|
||||||
<script src="bootstrap/js/bootstrap-alert.js"></script>
|
<script src="bootstrap/js/bootstrap-alert.js"></script>
|
||||||
|
|
|
@ -7,6 +7,12 @@
|
||||||
Ocamlmsg is a prototype of a sensible recursive message broker.
|
Ocamlmsg is a prototype of a sensible recursive message broker.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<h2>Homepage</h2>
|
||||||
|
<p>
|
||||||
|
The project is currently hosted on github at <a
|
||||||
|
href="http://github.com/tonyg/ocamlmsg/">http://github.com/tonyg/ocamlmsg/</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h2>Copyright & Licence</h2>
|
<h2>Copyright & Licence</h2>
|
||||||
<p>
|
<p>
|
||||||
Ocamlmsg is Copyright (C) 2012 Tony Garnock-Jones.
|
Ocamlmsg is Copyright (C) 2012 Tony Garnock-Jones.
|
||||||
|
|
|
@ -17,13 +17,15 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container">
|
<div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container">
|
||||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="http://github.com/tonyg/ocamlmsg/">Ocamlmsg</a><div class="nav-collapse">
|
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="/">Ocamlmsg</a><div class="nav-collapse">
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li class="btn-danger"><a href="about.html">About</a></li>
|
|
||||||
<li class="active"><a href="/">Main</a></li>
|
<li class="active"><a href="/">Main</a></li>
|
||||||
<li><a href="/nodes.html">Nodes</a></li>
|
<li><a href="/nodes.html">Nodes</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="nav pull-right"><li><a id="server_status_message_container"><span id="server_status_message">Connected</span></a></li></ul>
|
<ul class="nav pull-right">
|
||||||
|
<li><a id="server_status_message_container"><span id="server_status_message">Connected</span></a></li>
|
||||||
|
<li><a href="about.html">About</a></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div></div></div>
|
</div></div></div>
|
||||||
<div class="container"><body>
|
<div class="container"><body>
|
||||||
|
@ -49,6 +51,6 @@
|
||||||
<h2>Debug</h2>
|
<h2>Debug</h2>
|
||||||
<pre id="debug_container"></pre>
|
<pre id="debug_container"></pre>
|
||||||
</body></div>
|
</body></div>
|
||||||
<script>$(document).ready(ui_main);</script><script src="bootstrap/js/bootstrap-transition.js"></script><script src="bootstrap/js/bootstrap-alert.js"></script><script src="bootstrap/js/bootstrap-modal.js"></script><script src="bootstrap/js/bootstrap-dropdown.js"></script><script src="bootstrap/js/bootstrap-scrollspy.js"></script><script src="bootstrap/js/bootstrap-tab.js"></script><script src="bootstrap/js/bootstrap-tooltip.js"></script><script src="bootstrap/js/bootstrap-popover.js"></script><script src="bootstrap/js/bootstrap-button.js"></script><script src="bootstrap/js/bootstrap-collapse.js"></script><script src="bootstrap/js/bootstrap-carousel.js"></script><script src="bootstrap/js/bootstrap-typeahead.js"></script>
|
<script>$(document).ready(ui_main);</script><script>Ocamlmsg.install_tap({});</script><script src="bootstrap/js/bootstrap-transition.js"></script><script src="bootstrap/js/bootstrap-alert.js"></script><script src="bootstrap/js/bootstrap-modal.js"></script><script src="bootstrap/js/bootstrap-dropdown.js"></script><script src="bootstrap/js/bootstrap-scrollspy.js"></script><script src="bootstrap/js/bootstrap-tab.js"></script><script src="bootstrap/js/bootstrap-tooltip.js"></script><script src="bootstrap/js/bootstrap-popover.js"></script><script src="bootstrap/js/bootstrap-button.js"></script><script src="bootstrap/js/bootstrap-collapse.js"></script><script src="bootstrap/js/bootstrap-carousel.js"></script><script src="bootstrap/js/bootstrap-typeahead.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
72
web/index.js
72
web/index.js
|
@ -1,30 +1,40 @@
|
||||||
function server_disconnected() {
|
|
||||||
$("#server_stats_connection_count").text("—");
|
|
||||||
$("#server_stats_boot_time").text("—");
|
|
||||||
$("#server_stats_uptime").text("—");
|
|
||||||
$("#server_classes").text("—");
|
|
||||||
}
|
|
||||||
|
|
||||||
function refresh_server_stats() {
|
|
||||||
$.getJSON("/_/server_stats", function (data) {
|
|
||||||
$("#server_stats_connection_count").text(data.connection_count);
|
|
||||||
$("#server_stats_boot_time").text(new Date(data.boot_time * 1000));
|
|
||||||
$("#server_stats_uptime").text(data.uptime);
|
|
||||||
$("#server_classes").text(data.classes.join(", "));
|
|
||||||
switch (Ocamlmsg.$tap.readyState) {
|
|
||||||
case 0: // connecting
|
|
||||||
case 1: // open
|
|
||||||
case 2: // closing
|
|
||||||
break;
|
|
||||||
case 3: // closed
|
|
||||||
Ocamlmsg.force_reinstall();
|
|
||||||
}
|
|
||||||
}).error(server_disconnected);
|
|
||||||
}
|
|
||||||
|
|
||||||
function ui_main() {
|
function ui_main() {
|
||||||
refresh_server_stats();
|
var uptime = -1;
|
||||||
setInterval(refresh_server_stats, 5000);
|
var refresh_pending = false;
|
||||||
|
|
||||||
|
function server_disconnected() {
|
||||||
|
$("#server_stats_connection_count").text("—");
|
||||||
|
$("#server_stats_boot_time").text("—");
|
||||||
|
set_uptime(-1);
|
||||||
|
$("#server_classes").text("—");
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_uptime(new_uptime) {
|
||||||
|
uptime = new_uptime;
|
||||||
|
if (uptime == -1) {
|
||||||
|
$("#server_stats_uptime").text("—");
|
||||||
|
} else {
|
||||||
|
$("#server_stats_uptime").text(uptime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function refresh_server_stats() {
|
||||||
|
$.getJSON("/_/server_stats", function (data) {
|
||||||
|
$("#server_stats_connection_count").text(data.connection_count);
|
||||||
|
$("#server_stats_boot_time").text(new Date(data.boot_time * 1000));
|
||||||
|
set_uptime(data.uptime);
|
||||||
|
$("#server_classes").text(data.classes.join(", "));
|
||||||
|
}).error(server_disconnected);
|
||||||
|
refresh_pending = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function bump_uptime() {
|
||||||
|
if (uptime != -1) {
|
||||||
|
set_uptime(uptime + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setInterval(bump_uptime, 1000);
|
||||||
|
|
||||||
Ocamlmsg.$open_hooks.push(function (event, stream) {
|
Ocamlmsg.$open_hooks.push(function (event, stream) {
|
||||||
refresh_server_stats();
|
refresh_server_stats();
|
||||||
|
@ -34,9 +44,11 @@ function ui_main() {
|
||||||
Ocamlmsg.subscribe("system.log", "", "log_messages", "completion3");
|
Ocamlmsg.subscribe("system.log", "", "log_messages", "completion3");
|
||||||
});
|
});
|
||||||
Ocamlmsg.$close_hooks.push(server_disconnected);
|
Ocamlmsg.$close_hooks.push(server_disconnected);
|
||||||
Ocamlmsg.install_tap({
|
Ocamlmsg.$message_hooks.push(function (event, stream) {
|
||||||
message: function (event, stream) {
|
if (!refresh_pending) {
|
||||||
$("#debug_container").append(JSON.stringify(event.data) + "\n");
|
refresh_pending = true;
|
||||||
},
|
setTimeout(refresh_server_stats, 1000);
|
||||||
|
}
|
||||||
|
$("#debug_container").append(JSON.stringify(event.data) + "\n");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,13 +17,15 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container">
|
<div class="navbar navbar-fixed-top"><div class="navbar-inner"><div class="container">
|
||||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="http://github.com/tonyg/ocamlmsg/">Ocamlmsg</a><div class="nav-collapse">
|
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="/">Ocamlmsg</a><div class="nav-collapse">
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li class="btn-danger"><a href="about.html">About</a></li>
|
|
||||||
<li><a href="/">Main</a></li>
|
<li><a href="/">Main</a></li>
|
||||||
<li class="active"><a href="/nodes.html">Nodes</a></li>
|
<li class="active"><a href="/nodes.html">Nodes</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="nav pull-right"><li><a id="server_status_message_container"><span id="server_status_message">Connected</span></a></li></ul>
|
<ul class="nav pull-right">
|
||||||
|
<li><a id="server_status_message_container"><span id="server_status_message">Connected</span></a></li>
|
||||||
|
<li><a href="about.html">About</a></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div></div></div>
|
</div></div></div>
|
||||||
<div class="container"><body>
|
<div class="container"><body>
|
||||||
|
@ -47,6 +49,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body></div>
|
</body></div>
|
||||||
<script>$(document).ready(nodes_main);</script><script src="bootstrap/js/bootstrap-transition.js"></script><script src="bootstrap/js/bootstrap-alert.js"></script><script src="bootstrap/js/bootstrap-modal.js"></script><script src="bootstrap/js/bootstrap-dropdown.js"></script><script src="bootstrap/js/bootstrap-scrollspy.js"></script><script src="bootstrap/js/bootstrap-tab.js"></script><script src="bootstrap/js/bootstrap-tooltip.js"></script><script src="bootstrap/js/bootstrap-popover.js"></script><script src="bootstrap/js/bootstrap-button.js"></script><script src="bootstrap/js/bootstrap-collapse.js"></script><script src="bootstrap/js/bootstrap-carousel.js"></script><script src="bootstrap/js/bootstrap-typeahead.js"></script>
|
<script>$(document).ready(nodes_main);</script><script>Ocamlmsg.install_tap({});</script><script src="bootstrap/js/bootstrap-transition.js"></script><script src="bootstrap/js/bootstrap-alert.js"></script><script src="bootstrap/js/bootstrap-modal.js"></script><script src="bootstrap/js/bootstrap-dropdown.js"></script><script src="bootstrap/js/bootstrap-scrollspy.js"></script><script src="bootstrap/js/bootstrap-tab.js"></script><script src="bootstrap/js/bootstrap-tooltip.js"></script><script src="bootstrap/js/bootstrap-popover.js"></script><script src="bootstrap/js/bootstrap-button.js"></script><script src="bootstrap/js/bootstrap-collapse.js"></script><script src="bootstrap/js/bootstrap-carousel.js"></script><script src="bootstrap/js/bootstrap-typeahead.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -27,5 +27,4 @@ function refresh_node_list() {
|
||||||
|
|
||||||
function nodes_main() {
|
function nodes_main() {
|
||||||
Ocamlmsg.$open_hooks.push(refresh_node_list);
|
Ocamlmsg.$open_hooks.push(refresh_node_list);
|
||||||
Ocamlmsg.install_tap({});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,12 +3,17 @@ var Ocamlmsg = {
|
||||||
$args: null,
|
$args: null,
|
||||||
|
|
||||||
$open_hooks: [],
|
$open_hooks: [],
|
||||||
|
$message_hooks: [],
|
||||||
$close_hooks: [],
|
$close_hooks: [],
|
||||||
|
|
||||||
run_open_hooks: function (event, stream) {
|
run_open_hooks: function (event, stream) {
|
||||||
$.each(Ocamlmsg.$open_hooks, function (i, f) { f(event, stream); });
|
$.each(Ocamlmsg.$open_hooks, function (i, f) { f(event, stream); });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
run_message_hooks: function (event, stream) {
|
||||||
|
$.each(Ocamlmsg.$message_hooks, function (i, f) { f(event, stream); });
|
||||||
|
},
|
||||||
|
|
||||||
run_close_hooks: function (event, stream) {
|
run_close_hooks: function (event, stream) {
|
||||||
$.each(Ocamlmsg.$close_hooks, function (i, f) { f(event, stream); });
|
$.each(Ocamlmsg.$close_hooks, function (i, f) { f(event, stream); });
|
||||||
},
|
},
|
||||||
|
@ -67,21 +72,33 @@ var Ocamlmsg = {
|
||||||
Ocamlmsg._send(Ocamlmsg._create(classname, arg, reply_name, factory));
|
Ocamlmsg._send(Ocamlmsg._create(classname, arg, reply_name, factory));
|
||||||
},
|
},
|
||||||
|
|
||||||
install_tap: function (args) {
|
_install_tap: function () {
|
||||||
Ocamlmsg.$args = args;
|
|
||||||
Ocamlmsg.$tap = $.stream("/_/tap", {
|
Ocamlmsg.$tap = $.stream("/_/tap", {
|
||||||
type: "http",
|
type: "http",
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
enableXDR: true,
|
enableXDR: true,
|
||||||
|
|
||||||
open: Ocamlmsg.run_open_hooks,
|
open: Ocamlmsg.run_open_hooks,
|
||||||
message: args.message,
|
message: Ocamlmsg.run_message_hooks,
|
||||||
error: Ocamlmsg.run_close_hooks,
|
error: Ocamlmsg.run_close_hooks,
|
||||||
close: Ocamlmsg.run_close_hooks
|
close: Ocamlmsg.run_close_hooks
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
force_reinstall: function () {
|
install_tap: function (args) {
|
||||||
Ocamlmsg.install_tap(Ocamlmsg.$args);
|
Ocamlmsg.$args = args;
|
||||||
|
Ocamlmsg._install_tap();
|
||||||
|
setInterval(Ocamlmsg.check_connectivity, 5000);
|
||||||
|
},
|
||||||
|
|
||||||
|
check_connectivity: function () {
|
||||||
|
switch (Ocamlmsg.$tap.readyState) {
|
||||||
|
case 0: // connecting
|
||||||
|
case 1: // open
|
||||||
|
case 2: // closing
|
||||||
|
break;
|
||||||
|
case 3: // closed
|
||||||
|
Ocamlmsg._install_tap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue