Real-time clock
A real-time clock made with Mojolicious::Lite. I am using WebSocket. It can be run on Chrome that natively supports WebSockets.
Real-time clock
It is a real-time clock.
[f: id: perlcodesample: 20100415220535p: image]
Source code
The source code of the real-time clock.
use Mojolicious::Lite; use Mojo::IOLoop; my $clients = {}; my $loop = Mojo::IOLoop->singleton; websocket'/' => sub { my $self = shift; #Client id my $cid = "$self"; #Controller my $controller = $self; #Send date and time my $datetime = localtime; $self->send($datetime); #Receive message; $self->on('message' => sub { my ($self, $message) = @_; #Start clock if ($message eq'Start') { #Shortcut return if $clients->{$cid} {running}; # Start $clients->{$cid} {running} = 1; #Subroutine for sending date and time my $send_datetime; $send_datetime = sub { #Send date and time my $datetime = localtime; $controller->send($datetime); #Timer $loop->timer(1, $send_datetime) if $clients->{$cid} {running}; };; #Send $send_datetime->(); } #Stop clock else {$clients->{$cid} {running} = 0} }); # on_finish $self->on('finish' => sub { # Remove client delete $clients->{$cid}; }); };; get'/' =>'index'; app->start; __DATA__ @@index.html.ep %my $url = $self->req->url->to_abs->scheme($self->req->is_secure?'wss':'ws')->path('/'); <! doctype html> <html> <head> <title> Mojo Websocket Demo </title> <script type = "text / javascript"> // only load the flash fallback when needed if (! ('WebSocket' in window)) { document.write ([[ '<scr' +'ipt type = "text / javascript" src = "web-socket-js / swfobject.js"> </scr'+'ipt>', '<scr' +'ipt type = "text / javascript" src = "web-socket-js / FABridge.js"> </scr'+'ipt>', '<scr' +'ipt type = "text / javascript" src = "web-socket-js / web_socket.js"> </scr'+'ipt>' ] .join('')); } </script> <script type = "text / javascript"> if (WebSocket.__initialize) { // Set URL of your WebSocketMain.swf here: WebSocket.__swfLocation ='web-socket-js / WebSocketMain.swf'; } // example copied from web-socket-js / sample.html var ws, input, clock; function init () { // Connect to Web Socket. ws = new WebSocket ('<%= $url%>'); // Receive message ws.onmessage = function (e) { // Update clock clock = document.getElementById ('clock'); clock.innerHTML = e.data; };; } function onClockStart () { // Start clock ws.send ('Start'); } function onClockStop () { // Stop clock ws.send ('Stop'); } window.onload = init; </script> </head> <span id = "clock"> </span> <button onclick = "onClockStart (); return false;"> Start </button> <button onclick = "onClockStop (); return false;"> Stop </button> </html>