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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 32 - (show annotations)
Thu Dec 20 21:24:24 2007 UTC (16 years, 3 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 <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 var pollreq = null;
11 var polltimer = false;
12 var i=0;
13 var isaborted = 0;
14 parent.Meteor.register(this);
15
16 function newXmlHttp() {
17 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 }
22
23 function poll() {
24 isaborted = 0;
25 pollreq = null;
26 try {
27 clearTimeout(polltimer);
28 } catch (e) {}
29 var byteoffset = 0;
30 var newdata;
31 document.domain = topdomain;
32 var url = parent.Meteor.getSubsUrl();
33 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 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 }
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 var x = parent.Meteor.pollfreq - (t-lastrequesttime);
74 if (x < 10) x = 10;
75 pollreq = null;
76 setTimeout(poll, x);
77 }
78 }
79
80 function ptimeout() {
81 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();
96 pollreq = null;
97 clearTimeout(polltimer);
98 }
99 setTimeout('guard()', 1000);
100 }
101
102 poll();
103 guard();
104
105
106 </script>
107 </body>
108 </html>

  ViewVC Help
Powered by ViewVC 1.1.26