39 lines
		
	
	
		
			957 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			957 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Event stream handling.
 | |
| 
 | |
| See https://developer.mozilla.org/en-US/docs/Web/API/EventSource for a more
 | |
| comprehensive explanation.
 | |
| */
 | |
| 
 | |
| events = {};
 | |
| 
 | |
| (function($, exports) {
 | |
|     var e = new EventSource('/events');
 | |
| 
 | |
|     exports.connect = function(name, elements) {
 | |
|         // wrap to allow selector, jQuery object and DOM nodes
 | |
|         var $elements = $(elements);
 | |
| 
 | |
|         // add listener that triggers events in DOM
 | |
|         this.listen(name, function(message) {
 | |
|             $elements.trigger('server-event', [message]);
 | |
|         });
 | |
|     };
 | |
| 
 | |
|     exports.listen = function(name, callback) {
 | |
|         // add event listener to event stream
 | |
|         e.addEventListener(name, function(m) {
 | |
|             try {
 | |
|                 var message = JSON.parse(m.data);
 | |
|             } catch(err) {
 | |
|                 console.exception("Received malformed message: ",err);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             callback(message);
 | |
|         });
 | |
|     };
 | |
| })(jQuery, events);
 | |
| 
 | |
| 
 |