/[meteor]/googlecode.com/svn/trunk/public_html/poll.html
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /googlecode.com/svn/trunk/public_html/poll.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3 by andrew.betts, Mon Nov 20 17:59:30 2006 UTC revision 32 by andrew.betts, Thu Dec 20 21:24:24 2007 UTC
# Line 7  var thisdomain = document.domain; Line 7  var thisdomain = document.domain;
7  var topdomain = domainparts[domainparts.length-2]+"."+domainparts[domainparts.length-1];  var topdomain = domainparts[domainparts.length-2]+"."+domainparts[domainparts.length-1];
8  document.domain = topdomain;  document.domain = topdomain;
9  var lastrequesttime = 0;  var lastrequesttime = 0;
10  var pollreq = false;  var pollreq = null;
11  var polltimer = false;  var polltimer = false;
12    var i=0;
13    var isaborted = 0;
14  parent.Meteor.register(this);  parent.Meteor.register(this);
15    
 Function.prototype.bind = function(obj) {  
         var method = this,  
         temp = function() {  
                 return method.apply(obj, arguments);  
         };  
         return temp;  
 }  
   
16  function newXmlHttp() {  function newXmlHttp() {
17          var xmlhttp;          try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
18          /*@cc_on @*/          try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
19          /*@if (@_jscript_version >= 5)          try { return new XMLHttpRequest(); } catch(e) {}
20                  try {          return null;
                         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");  
                 } catch (e) {  
                         try {  
                                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
                         } catch (E) {  
                                 xmlhttp = false;  
                         }  
                 }  
         @end @*/  
         if (!xmlhttp && typeof XMLHttpRequest!='undefined') {  
                 xmlhttp = new XMLHttpRequest();  
         }  
         return xmlhttp;  
21  }  }
22    
23  function poll() {  function poll() {
24          if (polltimer) clearTimeout(polltimer);          isaborted = 0;
25            pollreq = null;
26            try {
27                    clearTimeout(polltimer);
28            } catch (e) {}
29          var byteoffset = 0;          var byteoffset = 0;
30          var newdata;          var newdata;
31          document.domain = topdomain;          document.domain = topdomain;
32          var url = "http://"+location.hostname+"/push?channel="+get("channel")+"&id="+get("MHostId")+"&persist="+get("persist")+"&template=2";          var url = parent.Meteor.getSubsUrl();
33          if (get("lastmsgreceived") >= 0) {          if (typeof(url)!="undefined") {
34                  url += "&restartfrom="+(get("lastmsgreceived")+1);                  try {
35          } else if (get("backtrack") > 0) {                          document.domain = thisdomain;
36                  url += "&backtrack="+get("backtrack");                  } catch (e) {}
37          } else if (typeof(get("backtrack")) != "number") {                  pollreq = newXmlHttp();
38                  url += "&restartfrom=";                  pollreq.onreadystatechange = handleresponse;
39                    pollreq.open("GET", url, true);
40                    var now = new Date();
41                    var t = now.getTime();
42                    lastrequesttime = t;
43                    if (parent.Meteor.polltimeout) polltimer = setTimeout(ptimeout, parent.Meteor.polltimeout);
44                    pollreq.send(null);
45          }          }
         if (get("maxmessages") && get("persist")) url += "&maxmessages="+get("maxmessages");  
         var now = new Date();  
         var t = now.getTime();  
         url += "&nocache="+t;  
         try {  
                 document.domain = thisdomain;  
         } catch (e) {}  
         pollreq = newXmlHttp();  
         pollreq.open("GET", url, true);  
         pollreq.onreadystatechange = handleresponse.bind(pollreq);  
         lastrequesttime = t;  
         if (get("polltimeout")) polltimer = setTimeout(ptimeout, get("polltimeout"));  
         pollreq.send(null);  
46          document.domain=topdomain;          document.domain=topdomain;
47  }  }
48    
49  function handleresponse() {  function handleresponse() {
50          if (this.readyState == 4) {          if (typeof(pollreq) == "object" && pollreq.readyState == 4 && !isaborted) {
51                    try {
52                            clearTimeout(polltimer);
53                    } catch (e) {}
54                  if (typeof(topdomain) == "undefined") return false;                  if (typeof(topdomain) == "undefined") return false;
55                  document.domain=topdomain;                  document.domain=topdomain;
56                  newdata = this.responseText;                  newdata = pollreq.responseText;
                 var x = newdata.indexOf("parent.Meteor.setServerTime(");  
                 if (x != -1) {  
                         y = newdata.indexOf(");", x);  
                         if (y != -1) eval(newdata.substring(x,y+2));  
                 }  
57                  while (1) {                  while (1) {
58                          var x = newdata.indexOf("<s"+"cript>p(");                          var x = newdata.indexOf("<s"+"cript>p(");
59                          if (x != -1) {                          if (x != -1) {
# Line 94  function handleresponse() { Line 70  function handleresponse() {
70                  }                  }
71                  var now = new Date();                  var now = new Date();
72                  var t = now.getTime();                  var t = now.getTime();
73                  var x = get("pollfreq") - (t-lastrequesttime);                  var x = parent.Meteor.pollfreq - (t-lastrequesttime);
74                  if (x < 10) x = 10;                  if (x < 10) x = 10;
75                    pollreq = null;
76                  setTimeout(poll, x);                  setTimeout(poll, x);
77          }          }
78  }  }
79    
80  function ptimeout() {  function ptimeout() {
81          if (typeof(pollreq) == "object") {          isaborted = 1;
82            pollreq.abort();
83            pollreq = null;
84            clearTimeout(polltimer);
85            var now = new Date();
86            var t = now.getTime();
87            var x = parent.Meteor.pollfreq - (t-lastrequesttime);
88            if (x < 10) x = 10;
89            setTimeout(poll, x);
90    }
91    
92    function guard() {
93            var url = parent.Meteor.getSubsUrl();
94            if (typeof(url)=="undefined") {
95                  pollreq.abort();                  pollreq.abort();
96                  delete pollreq;                  pollreq = null;
97                    clearTimeout(polltimer);
98          }          }
99          poll();          setTimeout('guard()', 1000);
100  }  }
101    
102  poll();  poll();
103    guard();
104    
105    
106  </script>  </script>
107  </body>  </body>
 </html>  
108    </html>

Legend:
Removed from v.3  
changed lines
  Added in v.32

  ViewVC Help
Powered by ViewVC 1.1.26