/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 32 - (hide annotations)
Thu Dec 20 21:24:24 2007 UTC (16 years, 4 months ago) by andrew.betts
File MIME type: text/html
File size: 2458 byte(s)
Complete rewrite of the JS web client
Opera and Safari compatibility
Saner request format

1 andrew.betts 26 <html>
2     <body>
3     <script type="text/javascript">
4     window.onError = null;
5     var domainparts = document.domain.split(".");
6     var thisdomain = document.domain;
7     var topdomain = domainparts[domainparts.length-2]+"."+domainparts[domainparts.length-1];
8     document.domain = topdomain;
9     var lastrequesttime = 0;
10 andrew.betts 32 var pollreq = null;
11 andrew.betts 26 var polltimer = false;
12     var i=0;
13     var isaborted = 0;
14     parent.Meteor.register(this);
15    
16     function newXmlHttp() {
17 andrew.betts 32 try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
18     try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
19     try { return new XMLHttpRequest(); } catch(e) {}
20     return null;
21 andrew.betts 26 }
22    
23     function poll() {
24     isaborted = 0;
25 andrew.betts 32 pollreq = null;
26 andrew.betts 26 try {
27     clearTimeout(polltimer);
28     } catch (e) {}
29     var byteoffset = 0;
30     var newdata;
31     document.domain = topdomain;
32 andrew.betts 32 var url = parent.Meteor.getSubsUrl();
33 andrew.betts 26 if (typeof(url)!="undefined") {
34     try {
35     document.domain = thisdomain;
36     } catch (e) {}
37     pollreq = newXmlHttp();
38     pollreq.onreadystatechange = handleresponse;
39     pollreq.open("GET", url, true);
40 andrew.betts 32 var now = new Date();
41     var t = now.getTime();
42 andrew.betts 26 lastrequesttime = t;
43 andrew.betts 32 if (parent.Meteor.polltimeout) polltimer = setTimeout(ptimeout, parent.Meteor.polltimeout);
44 andrew.betts 26 pollreq.send(null);
45     }
46     document.domain=topdomain;
47     }
48    
49     function handleresponse() {
50     if (typeof(pollreq) == "object" && pollreq.readyState == 4 && !isaborted) {
51     try {
52     clearTimeout(polltimer);
53     } catch (e) {}
54     if (typeof(topdomain) == "undefined") return false;
55     document.domain=topdomain;
56     newdata = pollreq.responseText;
57     while (1) {
58     var x = newdata.indexOf("<s"+"cript>p(");
59     if (x != -1) {
60     y = newdata.indexOf("</"+"script>", x);
61     if (y != -1) {
62     eval(newdata.substring((x+8),y));
63     newdata = newdata.substring(y+9);
64     } else {
65     break;
66     }
67     } else {
68     break;
69     }
70     }
71     var now = new Date();
72     var t = now.getTime();
73 andrew.betts 32 var x = parent.Meteor.pollfreq - (t-lastrequesttime);
74 andrew.betts 26 if (x < 10) x = 10;
75 andrew.betts 32 pollreq = null;
76 andrew.betts 26 setTimeout(poll, x);
77     }
78     }
79    
80     function ptimeout() {
81     isaborted = 1;
82     pollreq.abort();
83 andrew.betts 32 pollreq = null;
84 andrew.betts 26 clearTimeout(polltimer);
85     var now = new Date();
86     var t = now.getTime();
87 andrew.betts 32 var x = parent.Meteor.pollfreq - (t-lastrequesttime);
88 andrew.betts 26 if (x < 10) x = 10;
89     setTimeout(poll, x);
90     }
91    
92 andrew.betts 29 function guard() {
93 andrew.betts 32 var url = parent.Meteor.getSubsUrl();
94 andrew.betts 29 if (typeof(url)=="undefined") {
95     pollreq.abort();
96 andrew.betts 32 pollreq = null;
97 andrew.betts 29 clearTimeout(polltimer);
98     }
99 andrew.betts 31 setTimeout('guard()', 1000);
100 andrew.betts 29 }
101    
102 andrew.betts 26 poll();
103 andrew.betts 29 guard();
104 andrew.betts 26
105 andrew.betts 29
106 andrew.betts 26 </script>
107     </body>
108     </html>

  ViewVC Help
Powered by ViewVC 1.1.26