2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-13 17:26:34 +00:00

longpoll reconnect patch

git-svn-id: https://svn.fhem.de/fhem/trunk@2199 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2012-11-26 17:21:24 +00:00
parent 1bb95df34f
commit 4bdd36c988
9 changed files with 47 additions and 21 deletions

View File

@ -1,27 +1,29 @@
- SVN - SVN
- feature: new Module 59_HCS.pm for monitoring heating valves (FHT, HM-CC-VD) - feature: new Module 59_HCS.pm for monitoring heating valves (FHT, HM-CC-VD)
to contral a central heating unit. I thank Benjamin for his support! (M. to contral a central heating unit. I thank Benjamin for his
Fischer) support! (M. Fischer)
- feature: new Module 72_FB_CALLMONITOR for receiving telephone call events - feature: new Module 72_FB_CALLMONITOR for receiving telephone call events
(Markus) (Markus)
- feature: new Module 71_YAMAHA_AVR.pm for controlling Yamaha AV receivers - feature: new Module 71_YAMAHA_AVR.pm for controlling Yamaha AV receivers
over network (by Markus) over network (by Markus)
- feature: optional second parameter to fhem() to make it silent - feature: optional second parameter to fhem() to make it silent
- feature: autoloading commands, XmlList/etc renamed from 99 to 98. - feature: autoloading commands, XmlList/etc renamed from 99 to 98.
- feature: FHEMWEB returns external files in chunks to save memory - feature: FHEMWEB returns external files in chunks to save memory
- feature: commandref.html splitted: documentation is now appended to the - feature: commandref.html splitted: documentation is now appended to the
modules. modules.
- change: introduced readingsBulkUpdate, readingsSingleUpdate - change: introduced readingsBulkUpdate, readingsSingleUpdate
- change: added GPLv2 licensing information - change: added GPLv2 licensing information
- bugfix: FHEMWEB slider with min > 0 - bugfix: FHEMWEB slider with min > 0
- change: FHEMWEB CORS moved to options - change: FHEMWEB CORS moved to options
- change: FHEMWEB closing old TCP connections - change: FHEMWEB closing old TCP connections
- change: FHEMWEB added "Associated with" to detail-screen (Uli) - change: FHEMWEB added "Associated with" to detail-screen (Uli)
- change: FHEMWEB added ETag headers (Matthias) - change: FHEMWEB added ETag headers (Matthias)
- change: FHEMWEB devStateIcon added - change: FHEMWEB devStateIcon added
- change: 98_update.pm due a (probable) bug in perl, modules are no longer - change: HOWTO auf deutsch (ilmtuelp0815)
loading automatically. A restart is required now! (M. Fischer) - change: 98_update.pm due a (probable) bug in perl, modules are no longer
loading automatically. A restart is required now! (M. Fischer)
- feature: 98_update.pm saves the statefile before an update (M. Fischer) - feature: 98_update.pm saves the statefile before an update (M. Fischer)
- feature: FHEMWEB longpoll reconnect (Matthias)
- 2012-10-28 (5.3) - 2012-10-28 (5.3)
- feature: added functions trim, ltrim, rtrim, UntoggleDirect, - feature: added functions trim, ltrim, rtrim, UntoggleDirect,

View File

@ -2474,8 +2474,6 @@ FW_FlushInform($)
my $c = $hash->{CD}; my $c = $hash->{CD};
print $c $hash->{INFORMBUF}; print $c $hash->{INFORMBUF};
$hash->{INFORMBUF}=""; $hash->{INFORMBUF}="";
CommandDelete(undef, $name);
} }
################### ###################

View File

@ -15,6 +15,7 @@ body[id~=Media] { background-color: #A5A5A5; font-family:Verdana; font-size:
box-shadow:5px 5px 5px #000; margin-bottom: 10px;} box-shadow:5px 5px 5px #000; margin-bottom: 10px;}
#content { position:absolute; top:50px; left:180px; bottom:10px; right:10px; text-align:center} #content { position:absolute; top:50px; left:180px; bottom:10px; right:10px; text-align:center}
#startcontent {position:absolute; top:20px; left:200px; text-align:left; font-size: 16px; color:gray; } #startcontent {position:absolute; top:20px; left:200px; text-align:left; font-size: 16px; color:gray; }
#connect_err { background-color: #000000; color: #FFFFFF; position:absolute; top:0px; left:40px; z-index: 10; }
a { color:#CCCCCC; } a { color:#CCCCCC; }

View File

@ -4,6 +4,7 @@ body { background-color: #444444; background-image:url(../icons/darklogo); b
#menu { position:absolute; top:170px;left:20px; width:140px; } #menu { position:absolute; top:170px;left:20px; width:140px; }
#hdr { position:absolute; top:10px; left:180px; } #hdr { position:absolute; top:10px; left:180px; }
#content { position:absolute; top:50px; left:180px; bottom:20px; right:10px; } #content { position:absolute; top:50px; left:180px; bottom:20px; right:10px; }
#connect_err { background-color: #000000; color: #FFFFFF; position:absolute; top:0px; left:40px; z-index: 10; }
a { color: #CCCCCC; text-decoration: none;} a { color: #CCCCCC; text-decoration: none;}
a:hover { color: #ffffff; } a:hover { color: #ffffff; }

View File

@ -1,5 +1,7 @@
/*************** LONGPOLL START **************/ /*************** LONGPOLL START **************/
var FW_pollConn; var FW_pollConn;
//The number of the next line in FW_pollConn.responseText to parse
var FW_curLine;
function function
FW_cmd(arg) /* see also FW_devState */ FW_cmd(arg) /* see also FW_devState */
@ -12,10 +14,22 @@ FW_cmd(arg) /* see also FW_devState */
function function
FW_doUpdate() FW_doUpdate()
{ {
if(FW_pollConn.readyState != 4 || FW_pollConn.status != 200) if(FW_pollConn.readyState == 4) {
var errdiv = document.createElement('div');
errdiv.innerHTML = "Connection lost, reconnecting in 5 seconds...";
errdiv.setAttribute("id","connect_err");
document.body.appendChild(errdiv);
setTimeout("FW_longpoll()", 5000);
return; // some problem connecting
}
if(FW_pollConn.readyState != 3)
return; return;
var lines = FW_pollConn.responseText.split("\n"); var lines = FW_pollConn.responseText.split("\n");
for(var i=0; i < lines.length; i++) { //Pop the last (maybe empty) line after the last "\n"
//We wait until it is complete, i.e. terminated by "\n"
lines.pop();
for(var i=FW_curLine; i < lines.length; i++) {
var d = lines[i].split(";", 3); // Complete arg var d = lines[i].split(";", 3); // Complete arg
if(d.length != 3) if(d.length != 3)
continue; continue;
@ -23,13 +37,19 @@ FW_doUpdate()
if(el) if(el)
el.innerHTML=d[2]; el.innerHTML=d[2];
} }
FW_pollConn.abort(); //Next time, we continue at the next line
FW_longpoll(); FW_curLine = lines.length;
} }
function function
FW_longpoll() FW_longpoll()
{ {
var errdiv = document.getElementById("connect_err");
if(errdiv)
document.body.removeChild(errdiv);
FW_curLine = 0;
FW_pollConn = new XMLHttpRequest(); FW_pollConn = new XMLHttpRequest();
var room="room=all"; var room="room=all";
var sa = document.location.search.substring(1).split("&"); var sa = document.location.search.substring(1).split("&");

View File

@ -19,6 +19,7 @@ body[id~=Media] { background-color: #A5A5A5;
table a:hover {font-weight:bold;} table a:hover {font-weight:bold;}
#hdr { position:absolute; top:10px; left:180px; border:1px solid gray; } #hdr { position:absolute; top:10px; left:180px; border:1px solid gray; }
#content { position:absolute; top:50px; left:180px; bottom:10px; right:10px; text-align:center} #content { position:absolute; top:50px; left:180px; bottom:10px; right:10px; text-align:center}
#connect_err { background-color: #000000; color: #FFFFFF; position:absolute; top:0px; left:40px; z-index: 10; }
a { color: #278727; } a { color: #278727; }
img { border-style: none; } img { border-style: none; }
table { -moz-border-radius:8px; border-radius:8px; } table { -moz-border-radius:8px; border-radius:8px; }

View File

@ -9,6 +9,7 @@ select { font-family:Arial, sans-serif; font-size:16px;}
#menu { position:absolute; top: 2px; left:65px; } #menu { position:absolute; top: 2px; left:65px; }
#hdr { position:absolute; top:40px; left:65px; } #hdr { position:absolute; top:40px; left:65px; }
#content { position:absolute; top:85px; left: 0px; right: 0px;} #content { position:absolute; top:85px; left: 0px; right: 0px;}
#connect_err { background-color: #000000; color: #FFFFFF; position:absolute; top:0px; left:0px; z-index: 10; }
.devType { padding-top:10px; font-size:12px;} .devType { padding-top:10px; font-size:12px;}
a { color: #278727; } a { color: #278727; }

View File

@ -9,6 +9,7 @@ select { font-family:Arial, sans-serif; font-size:16px; }
#hdr { position:absolute; top:10px; left:180px; } #hdr { position:absolute; top:10px; left:180px; }
#content { position:absolute; top:50px; left:180px; bottom:20px; right:10px; } #content { position:absolute; top:50px; left:180px; bottom:20px; right:10px; }
#connect_err { background-color: #000000; color: #FFFFFF; position:absolute; top:0px; left:40px; z-index: 10; }
.devType { padding-top:20px; } .devType { padding-top:20px; }
a { color: #278727; } a { color: #278727; }
img { border-style: none; } img { border-style: none; }

View File

@ -9,6 +9,7 @@ select { font-family:Arial, sans-serif; font-size:16px}
#menu { position:absolute; top:152px;left:10px; width:140px; } #menu { position:absolute; top:152px;left:10px; width:140px; }
#hdr { position:absolute; top:10px; left:160px; } #hdr { position:absolute; top:10px; left:160px; }
#content { position:absolute; top:50px; left:160px; bottom:20px; right:10px; } #content { position:absolute; top:50px; left:160px; bottom:20px; right:10px; }
#connect_err { background-color: #000000; color: #FFFFFF; position:absolute; top:0px; left:40px; z-index: 10; }
.devType { padding-top:20px; } .devType { padding-top:20px; }
a { color: #278727; } a { color: #278727; }