2012-07-09 2 views
1

서버에서 보낸 이벤트 연결을 일시 중지하는 방법은 무엇입니까? 심지어 가능합니까, 아니면 SSE를 닫은 다음 다시 열고 모든 이벤트 처리기를 다시 할당해야합니까? 기술적으로 일어날 필요가 무엇서버 보낸 이벤트를 "일시 중지"하는 방법은 무엇입니까?

var source = new EventSource(url); 

source.addEventListener("something", somefunction, false); 
source.addEventListener("somethingElse", somefunction2, false); 

//...some code 

source.pause(); 


//...some code 

source.restart(); 

답변

2

예, 그건하지만 당신은 멀리 추상적 할 수 있습니다 내가하고 싶은 예를 들어

(모든 이론적, 나는 일시 정지/다시 시작 함수 이름을 모르는) . 참고 :

var source = new EventSource2(url); 

source.addEventListener("something", somefunction, false); 
source.addEventListener("somethingElse", somefunction2, false); 

source.connect(); 

source.disconnect(); 

source.connect(); 
+0

나는 이런 식으로 뭔가에 대해 생각했다,하지만 그것에 대해 * 해키 * _hacky_ – Neal

+4

아무것도 보이지 않았다,이 이유를 정확하게 추상화입니다 :이 하나는 당신이 .connect()

function EventSource2(url) { this.url = url; this.es = null; this.listeners = {}; } EventSource2.prototype = { constructor: EventSource2, connect: function() { this.es = new EventSource(this.url); this.bindEvents(); }, disconnect: function() { this.es.close(); this.es = null; }, bindEvents: function() { for (var type in this.listeners) { var evs = this.listeners[type]; for(var i = 0; i < evs.length; ++i) { this.es.addEventlistener(type, evs[i], false); } } }, addEventListener: function(type, fn) { if(!this.listeners[type]) { this.listeners[type] = []; } this.listeners[type].push(fn); if(this.es) { this.bindEvents(); } } } 

이 사용 할 후 연결 낮은 수준의 구조가 존재합니다. –

+0

bindEvents 함수에는 약간의 오타가 있습니다. this.es.addEventListener()에서 L은 대문자 여야합니다. – user1915746