From ca39eab296c99e5a2100045a2f8ff235bd04a98b Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Fri, 2 Mar 2018 10:58:36 +0000 Subject: [PATCH] fhemweb.js: ping the ws connection every 30s (Forum #85080) git-svn-id: https://svn.fhem.de/fhem/trunk@16311 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/01_FHEMWEB.pm | 5 +++-- fhem/www/pgm2/console.js | 4 ++-- fhem/www/pgm2/fhemweb.js | 11 +++++++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 9ef904902..4a94da40b 100644 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -817,7 +817,7 @@ FW_answerCall($) $FW_plotsize = AttrVal($FW_wname, "plotsize", $FW_ss ? "480,160" : $FW_tp ? "640,160" : "800,160"); my ($cmd, $cmddev) = FW_digestCgi($arg); - if($cmd && $FW_CSRF && $cmd !~ m/style (list|select)/) { + if($cmd && $FW_CSRF && $cmd !~ m/style (list|select|eventMonitor)/) { my $supplied = defined($FW_webArgs{fwcsrf}) ? $FW_webArgs{fwcsrf} : ""; my $want = $defs{$FW_wname}{CSRFTOKEN}; if($supplied ne $want) { @@ -2394,7 +2394,8 @@ FW_pH(@) my ($link, $txt, $td, $class, $doRet,$nonl) = @_; my $ret; - $link .= $FW_CSRF if($link =~ m/cmd/ && $link !~m/cmd=style%20(list|select)/); + $link .= $FW_CSRF if($link =~ m/cmd/ && + $link !~m/cmd=style%20(list|select|eventMonitor)/); $link = ($link =~ m,^/,) ? $link : "$FW_ME$FW_subdir?$link"; # Using onclick, as href starts safari in a webapp. diff --git a/fhem/www/pgm2/console.js b/fhem/www/pgm2/console.js index 3bf9db5c4..a98f3918a 100644 --- a/fhem/www/pgm2/console.js +++ b/fhem/www/pgm2/console.js @@ -84,14 +84,14 @@ consFill() var loc = (""+location).replace(/\?.*/,""); if($("body").attr("longpoll") == "websocket") { - if(consConn) { + if(consConn) consConn.close(); - } consConn = new WebSocket(loc.replace(/[&?].*/,'') .replace(/^http/i, "ws")+query); consConn.onclose = consConn.onerror = consConn.onmessage = consUpdate; + setTimeout(function(){FW_wsPing(consConn);}, 30000); } else { if(consConn) { diff --git a/fhem/www/pgm2/fhemweb.js b/fhem/www/pgm2/fhemweb.js index 06b85102c..02397d4fb 100644 --- a/fhem/www/pgm2/fhemweb.js +++ b/fhem/www/pgm2/fhemweb.js @@ -1108,6 +1108,7 @@ FW_longpoll() FW_pollConn.onclose = FW_pollConn.onerror = FW_pollConn.onmessage = FW_doUpdate; + setTimeout(function(){FW_wsPing(FW_pollConn);}, 30000); } else { FW_pollConn = new XMLHttpRequest(); @@ -1123,6 +1124,16 @@ FW_longpoll() ") with filter "+filter); } + +function +FW_wsPing(conn) // idle websockets are closed by the browser after 55sec +{ + if(!conn || conn.readyState != conn.OPEN) + return; + conn.send("\n"); + setTimeout(function(){FW_wsPing(conn);}, 30000); +} + /*************** LONGPOLL END **************/