summaryrefslogtreecommitdiff
path: root/deps/rabbitmq_web_mqtt_examples/priv/bunny.html
diff options
context:
space:
mode:
Diffstat (limited to 'deps/rabbitmq_web_mqtt_examples/priv/bunny.html')
-rw-r--r--deps/rabbitmq_web_mqtt_examples/priv/bunny.html169
1 files changed, 169 insertions, 0 deletions
diff --git a/deps/rabbitmq_web_mqtt_examples/priv/bunny.html b/deps/rabbitmq_web_mqtt_examples/priv/bunny.html
new file mode 100644
index 0000000000..3ff155b9d8
--- /dev/null
+++ b/deps/rabbitmq_web_mqtt_examples/priv/bunny.html
@@ -0,0 +1,169 @@
+<!doctype html>
+<html><head>
+ <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
+ <script src="mqttws31.js" type="text/javascript"></script>
+
+ <style>
+ #cnvs {
+ border: none;
+ -moz-border-radius: 4px;
+ cursor: url(pencil.cur),crosshair;
+ position: absolute;
+ overflow: hidden;
+ width: 100%;
+ height: 100%;
+ }
+ #cnvs:active {
+ cursor: url(pencil.cur),crosshair;
+ }
+ body {
+ overflow: hidden;
+ }
+ </style>
+ <title>RabbitMQ Web MQTT Examples: Bunny Drawing</title>
+ <link href="main.css" rel="stylesheet" type="text/css"/>
+</head><body lang="en">
+ <h1><a href="index.html">RabbitMQ Web MQTT Examples</a> > Bunny Drawing</h1>
+ <canvas id="cnvs"></canvas>
+<script>
+var send; var draw;
+send = draw = function(){};
+
+var lines = [];
+
+var canvas = document.getElementById('cnvs');
+
+if (canvas.getContext) {
+ var ctx = canvas.getContext('2d');
+
+ var img = new Image();
+ img.onload = function() {
+ ctx.drawImage(img, 230, 160);
+ };
+ img.src = 'bunny.png';
+
+ draw = function(p) {
+ ctx.beginPath();
+ ctx.moveTo(p.x1, p.y1);
+ ctx.lineTo(p.x2, p.y2);
+ ctx.stroke();
+ ctx.drawImage(img, 230, 160);
+ };
+
+ var do_resize = function() {
+ canvas.width = window.innerWidth;
+ canvas.height = window.innerHeight;
+
+ ctx.font = "bold 20px sans-serif";
+ ctx.fillStyle = "#444";
+ ctx.fillText("Draw wings on the bunny!", 260, 100);
+ ctx.font = "normal 16px sans-serif";
+ ctx.fillStyle = "#888";
+ ctx.fillText("(For more fun open a second browser)", 255, 130);
+
+ ctx.drawImage(img, 230, 160);
+
+ ctx.strokeStyle = "#fa0";
+ ctx.lineWidth = "10";
+ ctx.lineCap = "round";
+
+ $.map(lines, function (p) {
+ draw(p);
+ });
+ };
+
+ $(window).resize(do_resize);
+ $(do_resize);
+
+
+ var pos = $('#cnvs').position();
+ var prev = null;
+ $('#cnvs').mousedown(function(evt) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ $('#cnvs').bind('mousemove', function(e) {
+ var curr = {x:e.pageX-pos.left, y:e.pageY-pos.top};
+ if (!prev) {
+ prev = curr;
+ return;
+ }
+ if (Math.sqrt(Math.pow(prev.x - curr.x, 2) +
+ Math.pow(prev.y - curr.y, 2)) > 8) {
+ var p = {x1:prev.x, y1:prev.y, x2:curr.x, y2:curr.y}
+ lines.push(p);
+ draw(p);
+ send(JSON.stringify(p));
+ prev = curr;
+ }
+ });
+ });
+ $('html').mouseup(function() {
+ prev = null;
+ $('#cnvs').unbind('mousemove');
+ });
+}
+else {
+ document.write("Sorry - this demo requires a browser with canvas tag support.");
+}
+
+// MQTT boilerplate
+
+var debug = function(){
+ if (window.console && console.log && console.log.apply) {
+ console.log.apply(console, arguments);
+ }
+};
+
+var wsbroker = location.hostname; //mqtt websocket enabled broker
+var wsport = 15675; // port for above
+
+var client = new Paho.MQTT.Client(wsbroker, wsport, "/ws",
+ "myclientid_" + parseInt(Math.random() * 100, 10));
+
+client.onConnectionLost = function (responseObject) {
+ debug("CONNECTION LOST - " + responseObject.errorMessage);
+};
+
+client.onMessageArrived = function (message) {
+ debug("RECEIVE ON " + message.destinationName + " PAYLOAD " + message.payloadString);
+
+ var p = JSON.parse(message.payloadString);
+ lines.push(p);
+ draw(p, true);
+};
+
+var options = {
+ timeout: 3,
+ keepAliveInterval: 30,
+ onSuccess: function () {
+ debug("CONNECTION SUCCESS");
+ client.subscribe("bunny", {qos: 1});
+ },
+ onFailure: function (message) {
+ debug("CONNECTION FAILURE - " + message.errorMessage);
+ }
+};
+
+if (location.protocol == "https:") {
+ options.useSSL = true;
+}
+
+debug("CONNECT TO " + wsbroker + ":" + wsport);
+client.connect(options);
+
+$('#first input').focus(function() {
+ if (!has_had_focus) {
+ has_had_focus = true;
+ $(this).val("");
+ }
+});
+
+send = function(data) {
+ message = new Paho.MQTT.Message(data);
+ message.destinationName = "bunny";
+ debug("SEND ON " + message.destinationName + " PAYLOAD " + data);
+ client.send(message);
+};
+
+</script>
+</body></html>