Changeset 478
- Timestamp:
- 08/11/08 04:17:29 (5 months ago)
- Location:
- trunk/daemon/orbited/static
- Files:
-
- 2 modified
-
Orbited.js (modified) (10 diffs)
-
xsdrBridge.html (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/daemon/orbited/static/Orbited.js
r477 r478 341 341 self.open = function(_url) { 342 342 self.readyState = self.READY_STATE_OPENING; 343 xhr = createXHR(); 343 var url = new Orbited.URL(_url) 344 if (url.isSameDomain(location.href)) { 345 xhr = createXHR(); 346 } 347 else { 348 xhr = new Orbited.XSDR(); 349 } 350 // xhr = createXHR(); 344 351 xhr.open('GET', _url, true); 345 352 xhr.onreadystatechange = function() { … … 539 546 var numSent = sendQueue.length 540 547 sessionUrl.setQsParameter('ack', lastPacketId) 541 xhr = createXHR();548 // xhr = createXHR(); 542 549 xhr.onreadystatechange = function() { 543 550 ;;; self.logger.debug('send readyState', xhr.readyState) … … 752 759 id: 0, 753 760 register: function(receive, queue) { 754 var id = ++Orbited.singleton.XSDR ;761 var id = ++Orbited.singleton.XSDR.id; 755 762 Orbited.singleton.XSDR.receiveCbs[id] = receive; 756 763 Orbited.singleton.XSDR.queues[id] = queue; 764 ;;; Orbited.system.debug('id is', id) 765 return id; 757 766 } 758 767 } 759 760 768 Orbited.XSDR = function() { 761 769 var self = this; … … 771 779 queue 772 780 ) 773 var bridgeUrl = new URL("")774 bridgeUrl.domain = Orbited. hostname775 bridgeUrl.port = Orbited. port781 var bridgeUrl = new Orbited.URL("") 782 bridgeUrl.domain = Orbited.settings.hostname 783 bridgeUrl.port = Orbited.settings.port 776 784 bridgeUrl.path = '/static/xsdrBridge.html' 777 bridgeUrl.hash = id; 778 785 bridgeUrl.hash = id.toString(); 786 bridgeUrl.protocol = Orbited.settings.protocol 787 ;;; self.logger.debug('bridgeUrl.hash is', bridgeUrl.hash); 788 ;;; self.logger.debug('bridgeUrl.path is', bridgeUrl.path); 789 ;;; self.logger.debug('bridgeUrl is', bridgeUrl.render()); 779 790 var reset = function() { 780 791 self.responseText = "" … … 788 799 } 789 800 reset(); 790 801 self.onreadystatechange = function() { } 791 802 self.open = function(_method, _url, async) { 792 803 if (self.readyState == 4) { … … 799 810 throw new Error("Only Async XSDR supported") 800 811 } 812 ;;; self.logger.debug('open', _method, _url, async) 801 813 self.readyState = 1; 802 814 url = _url; … … 808 820 throw new Error("Invalid readyState"); 809 821 } 822 ;;; self.logger.debug('send', data) 810 823 if (!ifr) { 824 ;;; self.logger.debug('creating iframe') 811 825 ifr = document.createElement("iframe") 812 826 hideIframe(ifr); 813 827 ifr.src = bridgeUrl.render() 828 ;;; self.logger.debug('set ifr.src to', ifr.src); 814 829 document.body.appendChild(ifr); 815 830 } … … 840 855 841 856 var receive = function(payload) { 857 ;;; self.logger.debug('received', payload) 842 858 switch(payload[0]) { 843 case 'initialize': 844 push([method, url, data, requestHeaders]); 859 case 'initialized': 860 queue.push([method, url, data, requestHeaders]); 861 ;;; self.logger.debug('queue is', queue) 862 ;;; self.logger.debug('Orbited.singleton.XSDR.queues[id] is', Orbited.singleton.XSDR.queues[id]) 845 863 break; 846 864 case 'readystatechange': … … 870 888 } 871 889 Orbited.XSDR.prototype.logger = Orbited.getLogger("Orbited.XSDR"); 872 890 Orbited.singleton.XSDRBridgeLogger = Orbited.getLogger('XSDRBridge'); 873 891 874 892 /* Comet Transports! … … 916 934 } 917 935 else { 918 xhr = new XSubdomainRequest(url.domain, url.port);936 xhr = new Orbited.XSDR(); 919 937 } 920 938 } -
trunk/daemon/orbited/static/xsdrBridge.html
r477 r478 21 21 }; 22 22 23 24 23 function push(data) { 25 24 … … 37 36 } 38 37 } 39 if (!isOpera) 38 logger = null; 39 function debug() { 40 document.domain = topDomain 41 logger.debug.apply(logger, arguments) 42 try { 43 document.domain = origDomain; 44 } 45 catch(e) { 46 } 47 } 48 if (!isOpera) { 40 49 if (parts.length == 1) { 41 50 try { 42 51 document.domain = document.domain 43 parent.Orbited52 logger = parent.Orbited.singleton.XSDRBridgeLogger 44 53 topDomain = document.domain 45 54 } … … 51 60 document.domain = parts.slice(i).join(".") 52 61 try { 53 parent.Orbited62 logger = parent.Orbited.singleton.XSDRBridgeLogger 54 63 topDomain = document.domain 55 64 break; … … 60 69 } 61 70 } 62 }63 71 if (topDomain == null) 64 72 throw new Error("Invalid document.domain for cross-frame communication") 65 73 } 66 74 push(['initialized']) 67 68 75 try { 69 76 document.domain = origDomain … … 74 81 75 82 function getNext() { 83 // alert( 76 84 document.domain = topDomain 77 85 var queue = parent.Orbited.singleton.XSDR.queues[id] 78 // alert('queue: ' + parent.JSON.stringify(queue))86 // alert('queue: ' + queue.length) 79 87 var data = null 80 88 if (queue.length > 0) … … 97 105 function checkAbort() { 98 106 if (isOpera) 99 107 return 108 } 100 109 101 110 function doNextRequest() { 102 if (isOpera)103 sendGetNext()104 else111 // if (isOpera) 112 // sendGetNext() 113 // else 105 114 req = getNext(); 106 107 115 if (req == null) { 108 116 return setTimeout(doNextRequest, 10); 109 117 } 110 111 118 var smethod = req[0] 112 119 var surl = req[1] … … 120 127 readyState: xhr.readyState 121 128 } 122 if (xhr.readyState == 3) { 123 try { 124 var data = xhr.responseText.slice(responseIndex) 125 responseIndex = xhr.responseText.length; 126 payload['responseText'] = data; 127 } 128 catch(e) { 129 // alert('status..?'); 130 } 129 try { 130 payload['status'] = xhr.status 131 131 } 132 catch(e) { 133 } 134 try { 135 var data = xhr.responseText.slice(responseIndex) 136 responseIndex = xhr.responseText.length; 137 payload['responseText'] = data; 138 } 139 catch(e) { 140 } 141 push(["readystatechange", payload]) 142 132 143 if (xhr.readyState == 4) { 133 payload['responseText'] = xhr.responseText.slice(responseIndex)134 payload['status'] = xhr.status135 push(["readystatechange", payload])136 144 req = null; 137 145 return doNextRequest(); 138 146 } 139 push(["readystatechange", payload])140 147 } 141 // alert('xhr.open(' + smethod + ', ' + surl + ', true)');142 // alert('document.domain: ' + document.domain);143 148 xhr.open(smethod, surl, true) 144 149 for (key in sheaders) { … … 159 164 160 165 161 if (isOpera) 162 { 166 if (isOpera) { 163 167 // Message receiver handler (req. for Opera compatibility) 164 168 document.addEventListener('message', function(e) {