You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					54 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					54 lines
				
				1.8 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								// Generated by CoffeeScript 1.12.7
							 | 
						||
| 
								 | 
							
								(function() {
							 | 
						||
| 
								 | 
							
								  var EventSourceReceiver, transport, utils,
							 | 
						||
| 
								 | 
							
								    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
							 | 
						||
| 
								 | 
							
								    hasProp = {}.hasOwnProperty;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  utils = require('./utils');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  transport = require('./transport');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  EventSourceReceiver = (function(superClass) {
							 | 
						||
| 
								 | 
							
								    extend(EventSourceReceiver, superClass);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function EventSourceReceiver() {
							 | 
						||
| 
								 | 
							
								      return EventSourceReceiver.__super__.constructor.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    EventSourceReceiver.prototype.protocol = "eventsource";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    EventSourceReceiver.prototype.doSendFrame = function(payload) {
							 | 
						||
| 
								 | 
							
								      var data;
							 | 
						||
| 
								 | 
							
								      data = ['data: ', utils.escape_selected(payload, '\r\n\x00'), '\r\n\r\n'];
							 | 
						||
| 
								 | 
							
								      return EventSourceReceiver.__super__.doSendFrame.call(this, data.join(''));
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return EventSourceReceiver;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  })(transport.ResponseReceiver);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  exports.app = {
							 | 
						||
| 
								 | 
							
								    eventsource: function(req, res) {
							 | 
						||
| 
								 | 
							
								      var headers, origin;
							 | 
						||
| 
								 | 
							
								      if (!req.headers['origin'] || req.headers['origin'] === 'null') {
							 | 
						||
| 
								 | 
							
								        origin = '*';
							 | 
						||
| 
								 | 
							
								      } else {
							 | 
						||
| 
								 | 
							
								        origin = req.headers['origin'];
							 | 
						||
| 
								 | 
							
								        res.setHeader('Access-Control-Allow-Credentials', 'true');
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      res.setHeader('Content-Type', 'text/event-stream');
							 | 
						||
| 
								 | 
							
								      res.setHeader('Access-Control-Allow-Origin', origin);
							 | 
						||
| 
								 | 
							
								      res.setHeader('Vary', 'Origin');
							 | 
						||
| 
								 | 
							
								      headers = req.headers['access-control-request-headers'];
							 | 
						||
| 
								 | 
							
								      if (headers) {
							 | 
						||
| 
								 | 
							
								        res.setHeader('Access-Control-Allow-Headers', headers);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      res.writeHead(200);
							 | 
						||
| 
								 | 
							
								      res.write('\r\n');
							 | 
						||
| 
								 | 
							
								      transport.register(req, this, new EventSourceReceiver(req, res, this.options));
							 | 
						||
| 
								 | 
							
								      return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}).call(this);
							 |