Better reconnect logic.
This commit is contained in:
parent
dd969a4b31
commit
8ae2c89490
|
@ -17,13 +17,15 @@
|
|||
</head>
|
||||
<body>
|
||||
<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">
|
||||
<li class="btn-danger"><a href="about.html">About</a></li>
|
||||
<li><a href="/">Main</a></li>
|
||||
<li><a href="/nodes.html">Nodes</a></li>
|
||||
</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 class="container"><body>
|
||||
|
@ -33,6 +35,11 @@
|
|||
Ocamlmsg is a prototype of a sensible recursive message broker.
|
||||
</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>
|
||||
<p>
|
||||
Ocamlmsg is Copyright (C) 2012 Tony Garnock-Jones.
|
||||
|
@ -66,6 +73,6 @@
|
|||
</p>
|
||||
|
||||
</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>
|
||||
</html>
|
||||
|
|
|
@ -39,10 +39,9 @@
|
|||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</a>
|
||||
<a class="brand" href="http://github.com/tonyg/ocamlmsg/">Ocamlmsg</a>
|
||||
<a class="brand" href="/">Ocamlmsg</a>
|
||||
<div class="nav-collapse">
|
||||
<ul class="nav">
|
||||
<li class="btn-danger"><a href="about.html">About</a></li>
|
||||
<xsl:for-each select="document('nav.xml')/navitems/navitem">
|
||||
<li>
|
||||
<xsl:if test="@id = $active-section">
|
||||
|
@ -54,6 +53,7 @@
|
|||
</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>
|
||||
|
@ -65,6 +65,7 @@
|
|||
</div>
|
||||
|
||||
<xsl:copy-of select="script" />
|
||||
<script>Ocamlmsg.install_tap({});</script>
|
||||
|
||||
<script src="bootstrap/js/bootstrap-transition.js"></script>
|
||||
<script src="bootstrap/js/bootstrap-alert.js"></script>
|
||||
|
|
|
@ -7,6 +7,12 @@
|
|||
Ocamlmsg is a prototype of a sensible recursive message broker.
|
||||
</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>
|
||||
<p>
|
||||
Ocamlmsg is Copyright (C) 2012 Tony Garnock-Jones.
|
||||
|
|
|
@ -17,13 +17,15 @@
|
|||
</head>
|
||||
<body>
|
||||
<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">
|
||||
<li class="btn-danger"><a href="about.html">About</a></li>
|
||||
<li class="active"><a href="/">Main</a></li>
|
||||
<li><a href="/nodes.html">Nodes</a></li>
|
||||
</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 class="container"><body>
|
||||
|
@ -49,6 +51,6 @@
|
|||
<h2>Debug</h2>
|
||||
<pre id="debug_container"></pre>
|
||||
</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>
|
||||
</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() {
|
||||
refresh_server_stats();
|
||||
setInterval(refresh_server_stats, 5000);
|
||||
var uptime = -1;
|
||||
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) {
|
||||
refresh_server_stats();
|
||||
|
@ -34,9 +44,11 @@ function ui_main() {
|
|||
Ocamlmsg.subscribe("system.log", "", "log_messages", "completion3");
|
||||
});
|
||||
Ocamlmsg.$close_hooks.push(server_disconnected);
|
||||
Ocamlmsg.install_tap({
|
||||
message: function (event, stream) {
|
||||
$("#debug_container").append(JSON.stringify(event.data) + "\n");
|
||||
},
|
||||
Ocamlmsg.$message_hooks.push(function (event, stream) {
|
||||
if (!refresh_pending) {
|
||||
refresh_pending = true;
|
||||
setTimeout(refresh_server_stats, 1000);
|
||||
}
|
||||
$("#debug_container").append(JSON.stringify(event.data) + "\n");
|
||||
});
|
||||
}
|
||||
|
|
|
@ -17,13 +17,15 @@
|
|||
</head>
|
||||
<body>
|
||||
<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">
|
||||
<li class="btn-danger"><a href="about.html">About</a></li>
|
||||
<li><a href="/">Main</a></li>
|
||||
<li class="active"><a href="/nodes.html">Nodes</a></li>
|
||||
</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 class="container"><body>
|
||||
|
@ -47,6 +49,6 @@
|
|||
</div>
|
||||
</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>
|
||||
</html>
|
||||
|
|
|
@ -27,5 +27,4 @@ function refresh_node_list() {
|
|||
|
||||
function nodes_main() {
|
||||
Ocamlmsg.$open_hooks.push(refresh_node_list);
|
||||
Ocamlmsg.install_tap({});
|
||||
}
|
||||
|
|
|
@ -3,12 +3,17 @@ var Ocamlmsg = {
|
|||
$args: null,
|
||||
|
||||
$open_hooks: [],
|
||||
$message_hooks: [],
|
||||
$close_hooks: [],
|
||||
|
||||
run_open_hooks: function (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) {
|
||||
$.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));
|
||||
},
|
||||
|
||||
install_tap: function (args) {
|
||||
Ocamlmsg.$args = args;
|
||||
_install_tap: function () {
|
||||
Ocamlmsg.$tap = $.stream("/_/tap", {
|
||||
type: "http",
|
||||
dataType: "json",
|
||||
enableXDR: true,
|
||||
|
||||
open: Ocamlmsg.run_open_hooks,
|
||||
message: args.message,
|
||||
message: Ocamlmsg.run_message_hooks,
|
||||
error: Ocamlmsg.run_close_hooks,
|
||||
close: Ocamlmsg.run_close_hooks
|
||||
});
|
||||
},
|
||||
|
||||
force_reinstall: function () {
|
||||
Ocamlmsg.install_tap(Ocamlmsg.$args);
|
||||
install_tap: function (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