diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8820f86075c3558b2e403e298502c5242a405015..05b1afe3de9e4edc39449fefd05952db02887f05 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,7 +2,7 @@ image: docker:20.10.9
 
 variables:
   DOCKER_TLS_CERTDIR: "/certs"
-  IMAGE_VER: 2.2.0
+  IMAGE_VER: 2.2.1
 
 services:
   - docker:20.10.9-dind
diff --git a/lib/PiTube/Controller/Websockets.pm b/lib/PiTube/Controller/Websockets.pm
index 4267ff40ad28715bb6382b12d7ce3e70b02227a9..e750005b67e35013f7e901221d77ab14008d0378 100644
--- a/lib/PiTube/Controller/Websockets.pm
+++ b/lib/PiTube/Controller/Websockets.pm
@@ -28,12 +28,16 @@ sub main {
 
     $c->on(json => sub( $c, $message ) {
         if ( $message->{stream} ) {
+
             $c->redis->db->set(
                 join (':', ('live', $message->{stream}, $key)),
                 'live', 'EX', 16
             );
-            my $keys = $c->redis->db->keys( 'live:' . $message->{stream} . ':*' );
-            $c->send(encode_json({ watchers => scalar @{$keys} }));
+
+            $c->redis->db->keys( 'live:' . $message->{stream} . ':*', sub {
+                my ($db, $err, $res) = @_ ;
+                $c->send(encode_json({ watchers => scalar @{ $res} }));
+            });
         }
     });
 
diff --git a/templates/stream/player.html.ep b/templates/stream/player.html.ep
index 8c278b5f3b30988174529825a0bdbdbea13a29ea..95c1c0fb649433bad695625202655b8d7a3e670f 100644
--- a/templates/stream/player.html.ep
+++ b/templates/stream/player.html.ep
@@ -3,23 +3,17 @@
 %= include 'includes/player', src => $url, live => 1;
 
 <script>
+var timer;
+var ws;
 
 function connect() {
-  var ws = new WebSocket('<%= $c->config->{ws_url} %>');
+  ws = new WebSocket('<%= $c->config->{ws_url} %>');
 
   ws.onmessage = function (event) {
     var data = JSON.parse(event.data)
-
      if ( typeof data.watchers !== 'undefined' ) {
         console.log(data);
      }
-     else {
-        ws.send(JSON.stringify({
-            event: "watch",
-            stream: "<%= $c->stash->{stream}{id} %>"
-        }));
-     }
-
   };
 
   ws.onclose = function(e) {
@@ -35,6 +29,18 @@ function connect() {
   };
 }
 
+function poll() {
+  timer = setInterval(function() {
+     ws.send(JSON.stringify({
+         event: "watch",
+         stream: "<%= $c->stash->{stream}{id} %>"
+     }));
+  }, 15000);
+}
+
 connect();
+poll();
 
 </script>
+
+