1234567891011121314151617181920212223242526272829303132333435 |
- var XHRPolling = require('./xhr-polling')
- , util = require(process.binding('natives').util ? 'util' : 'sys');
- JSONPPolling = module.exports = function(){
- XHRPolling.apply(this, arguments);
- };
- util.inherits(JSONPPolling, XHRPolling);
-
- JSONPPolling.prototype.getOptions = function(){
- return {
- timeout: null, // no heartbeats
- closeTimeout: 8000,
- duration: 20000
- };
- };
-
- JSONPPolling.prototype._onConnect = function(req, res){
- this._index = req.url.match(/\/([0-9]+)\/?$/).pop();
- XHRPolling.prototype._onConnect.call(this, req, res);
- };
-
- JSONPPolling.prototype._write = function(message){
- if (this._open){
- if (this.request.headers.origin && !this._verifyOrigin(this.request.headers.origin)){
- message = "alert('Cross domain security restrictions not met');";
- } else {
- message = "io.JSONP["+ this._index +"]._("+ JSON.stringify(message) +");";
- }
- this.response.writeHead(200, {'Content-Type': 'text/javascript; charset=UTF-8', 'Content-Length': Buffer.byteLength(message)});
- this.response.write(message);
- this.response.end();
- this._onClose();
- }
- };
|