| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
- 	<meta charset='UTF-8'>
 
- 	
 
- 	<title>Websocket Meters</title>
 
-     <!-- 
 
-         Version 0.1 Contributed by William Greathouse    9-Sep-2013
 
-         Simple demo of WebSocket connection use. Not a great example of web coding,
 
-         but it is functional.
 
-         The meter displays are adapted from CSS-TRICKS Progress Bars by Chris Coyier 
 
-         at http://css-tricks.com/css3-progress-bars/
 
-     -->
 
- 	<style>
 
-         body {
 
-             background: #222;
 
-         }
 
-         h1 {
 
-             color: white;
 
-             text-align: center;
 
-         }
 
-         button {
 
-             width: 225px;
 
-             height: 30px;
 
-             margin: auto 10px;
 
-             background-color: #ccc;
 
-             -moz-border-radius: 5px;
 
-             -webkit-border-radius: 5px;
 
-             border-radius:6px;
 
-             color: blue;
 
-             font-size: 20px;
 
-         }
 
-         button:hover {
 
-             background-color: #888;
 
-         }
 
-         button:hover:disabled {
 
-             background-color: #ccc;
 
-         }
 
-         button:disabled {
 
-             color: lightgray;
 
-         }
 
-         .button_container {
 
-             width:550px;
 
-             display:block;
 
-             margin-left:auto;
 
-             margin-right:auto;
 
-         }
 
- 		.meter { 
 
- 			height: 20px;  /* Can be anything */
 
- 			position: relative;
 
- 			background: #555;
 
- 			-moz-border-radius: 25px;
 
- 			-webkit-border-radius: 25px;
 
- 			border-radius: 25px;
 
- 			padding: 10px;
 
- 			-webkit-box-shadow: inset 0 -1px 1px rgba(255,255,255,0.3);
 
- 			-moz-box-shadow   : inset 0 -1px 1px rgba(255,255,255,0.3);
 
- 			box-shadow        : inset 0 -1px 1px rgba(255,255,255,0.3);
 
- 		}
 
- 		.meter > span {
 
- 			display: block;
 
- 			height: 100%;
 
- 			   -webkit-border-top-right-radius: 20px;
 
- 			-webkit-border-bottom-right-radius: 20px;
 
- 			       -moz-border-radius-topright: 20px;
 
- 			    -moz-border-radius-bottomright: 20px;
 
- 			           border-top-right-radius: 20px;
 
- 			        border-bottom-right-radius: 20px;
 
- 			    -webkit-border-top-left-radius: 20px;
 
- 			 -webkit-border-bottom-left-radius: 20px;
 
- 			        -moz-border-radius-topleft: 20px;
 
- 			     -moz-border-radius-bottomleft: 20px;
 
- 			            border-top-left-radius: 20px;
 
- 			         border-bottom-left-radius: 20px;
 
- 			background-color: rgb(43,194,83);
 
- 			background-image: -webkit-gradient(
 
- 			  linear,
 
- 			  left bottom,
 
- 			  left top,
 
- 			  color-stop(0, rgb(43,194,83)),
 
- 			  color-stop(1, rgb(84,240,84))
 
- 			 );
 
- 			background-image: -moz-linear-gradient(
 
- 			  center bottom,
 
- 			  rgb(43,194,83) 37%,
 
- 			  rgb(84,240,84) 69%
 
- 			 );
 
- 			-webkit-box-shadow: 
 
- 			  inset 0 2px 9px  rgba(255,255,255,0.3),
 
- 			  inset 0 -2px 6px rgba(0,0,0,0.4);
 
- 			-moz-box-shadow: 
 
- 			  inset 0 2px 9px  rgba(255,255,255,0.3),
 
- 			  inset 0 -2px 6px rgba(0,0,0,0.4);
 
- 			box-shadow: 
 
- 			  inset 0 2px 9px  rgba(255,255,255,0.3),
 
- 			  inset 0 -2px 6px rgba(0,0,0,0.4);
 
- 			position: relative;
 
- 			overflow: hidden;
 
- 		}
 
- 		.meter > span:after, .animate > span > span {
 
- 			content: "";
 
- 			position: absolute;
 
- 			top: 0; left: 0; bottom: 0; right: 0;
 
- 			background-image: 
 
- 			   -webkit-gradient(linear, 0 0, 100% 100%, 
 
- 			      color-stop(.25, rgba(255, 255, 255, .2)), 
 
- 			      color-stop(.25, transparent), color-stop(.5, transparent), 
 
- 			      color-stop(.5, rgba(255, 255, 255, .2)), 
 
- 			      color-stop(.75, rgba(255, 255, 255, .2)), 
 
- 			      color-stop(.75, transparent), to(transparent)
 
- 			   );
 
- 			background-image: 
 
- 				-moz-linear-gradient(
 
- 				  -45deg, 
 
- 			      rgba(255, 255, 255, .2) 25%, 
 
- 			      transparent 25%, 
 
- 			      transparent 50%, 
 
- 			      rgba(255, 255, 255, .2) 50%, 
 
- 			      rgba(255, 255, 255, .2) 75%, 
 
- 			      transparent 75%, 
 
- 			      transparent
 
- 			   );
 
- 			z-index: 1;
 
- 			-webkit-background-size: 50px 50px;
 
- 			-moz-background-size: 50px 50px;
 
- 			-webkit-animation: move 2s linear infinite;
 
- 			   -webkit-border-top-right-radius: 20px;
 
- 			-webkit-border-bottom-right-radius: 20px;
 
- 			       -moz-border-radius-topright: 20px;
 
- 			    -moz-border-radius-bottomright: 20px;
 
- 			           border-top-right-radius: 20px;
 
- 			        border-bottom-right-radius: 20px;
 
- 			    -webkit-border-top-left-radius: 20px;
 
- 			 -webkit-border-bottom-left-radius: 20px;
 
- 			        -moz-border-radius-topleft: 20px;
 
- 			     -moz-border-radius-bottomleft: 20px;
 
- 			            border-top-left-radius: 20px;
 
- 			         border-bottom-left-radius: 20px;
 
- 			overflow: hidden;
 
- 		}
 
- 		
 
- 		.animate > span:after {
 
- 			display: none;
 
- 		}
 
- 		
 
- 		@-webkit-keyframes move {
 
- 		    0% {
 
- 		       background-position: 0 0;
 
- 		    }
 
- 		    100% {
 
- 		       background-position: 50px 50px;
 
- 		    }
 
- 		}
 
- 		
 
- 		.orange > span {
 
- 			background-color: #f1a165;
 
- 			background-image: -moz-linear-gradient(top, #f1a165, #f36d0a);
 
- 			background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #f1a165),color-stop(1, #f36d0a));
 
- 			background-image: -webkit-linear-gradient(#f1a165, #f36d0a); 
 
- 		}
 
- 		
 
- 		.red > span {
 
- 			background-color: #f0a3a3;
 
- 			background-image: -moz-linear-gradient(top, #f0a3a3, #f42323);
 
- 			background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #f0a3a3),color-stop(1, #f42323));
 
- 			background-image: -webkit-linear-gradient(#f0a3a3, #f42323);
 
- 		}
 
- 		
 
- 		.nostripes > span > span, .nostripes > span:after {
 
- 			-webkit-animation: none;
 
- 			background-image: none;
 
- 		}
 
-         #output {
 
-             background-color: #ccc;
 
-             height: 240px;
 
-             overflow-y: auto;
 
-         }
 
- 	</style>
 
- </head>
 
- <body>
 
- 	<div id="page_wrap">
 
- 		
 
- 	  <h1>Meter Updates via WebSocket</h1>
 
- 	  
 
- 	  <p/>
 
- 		<div class="meter">
 
- 			<span id="meter1" style="width: 25%"></span>
 
- 		</div>
 
-         <p/>
 
- 		
 
- 		<div class="meter orange nostripes">
 
- 			<span id="meter2" style="width: 33.3%"></span>
 
- 		</div>
 
-         <p/>
 
- 		
 
- 		<div class="meter red">
 
- 			<span id="meter3" style="width: 80%"></span>
 
- 		</div>
 
-         <p/>
 
- 	</div>
 
-     <div class="button_container">
 
-         <div>
 
-             <button id="connection" onclick="toggleConnection(this)">WebSocket Connect</button>
 
-             <button id="update" disabled onclick="toggleUpdate(this)">Disable Update</button>
 
-         </div>
 
-     </div>
 
-     <p/>
 
-     <div id="output"></div>
 
- 	
 
- </body>
 
- <script language="javascript" type="text/javascript">
 
-     var connection; // websocket connection
 
-     function writeToScreen (message) {
 
-         var div = document.createElement('div');
 
-         var output = document.getElementById('output');
 
-         div.innerHTML = message;
 
-         output.appendChild(div);
 
-         output.scrollTop = output.scrollHeight;
 
-     }
 
-     function ws_connect() {
 
-         // check for websocket support
 
-         // for Internet Explorer < 10 there are options for websocket support that
 
-         // could be integrated into production code, but for now, we are expecting 
 
-         // browser support to be present for this demo
 
-         if ('WebSocket' in window) {
 
-             writeToScreen('Connecting');
 
-             connection = new WebSocket('ws://' + window.location.host + '/meters');
 
-             connection.onopen = function(ev) {
 
-                 document.getElementById("connection").innerHTML = "WebSocket Disconnect";
 
-                 document.getElementById("update").disabled=false;
 
-                 document.getElementById("update").innerHTML = "Disable Update";
 
-                 writeToScreen('CONNECTED');
 
-                 var message = 'update on';
 
-                 writeToScreen('SENT: ' + message);
 
-                 connection.send(message);
 
-             };
 
-             connection.onclose = function(ev) {
 
-                 document.getElementById("update").disabled=true;
 
-                 document.getElementById("update").innerHTML = "Enable Update";
 
-                 document.getElementById("connection").innerHTML = "WebSocket Connect";
 
-                 writeToScreen('DISCONNECTED');
 
-             };
 
-             connection.onmessage = function(ev) {
 
-                 if (ev.data.substr(0,5) == "meter")
 
-                 {
 
-                     var target = ev.data.split(":")[0];
 
-                     var meter = document.getElementById(target);
 
-                     var data = ev.data.split(":")[1].split(",");
 
-                     var percent = (data[0]*100)/data[1];
 
-                     meter.style.width = percent+"%";
 
-                 }
 
-                 else
 
-                     writeToScreen('RECEIVED: ' + ev.data);
 
-             };
 
-             connection.onerror = function(ev) {
 
-                 alert("WebSocket error");
 
-             };
 
-         } else {
 
-             alert("WebSocket is not available!!!\n" +
 
-                   "Demo will not function.");
 
-         }
 
-     }
 
-     // user connect/disconnect
 
-     function toggleConnection(el) {
 
-         var tag=el.innerHTML;
 
-         if (tag == "WebSocket Connect")
 
-         {
 
-             ws_connect();
 
-         }
 
-         else
 
-         {
 
-             connection.close();
 
-         }
 
-     }
 
-     // user turn updates on/off
 
-     function toggleUpdate(el) {
 
-         var tag=el.innerHTML;
 
-         var message;
 
-         if (tag == "Enable Update")
 
-         {
 
-             message = 'update on';
 
-             el.innerHTML = "Disable Update";
 
-         }
 
-         else
 
-         {
 
-             message = 'update off';
 
-             el.innerHTML = "Enable Update";
 
-         }
 
-         writeToScreen('SENT: ' + message);
 
-         connection.send(message);
 
-     }
 
- </script>
 
- </html>
 
 
  |