0

Ich arbeite an einer Anwendung, die die window.EventSource verwendet, um Daten in einer Tabellenansicht zu streamen. Da das Limit für max-connections-pro-server auf 6 beschränkt ist, versuche ich zu einem bestimmten Zeitpunkt ein EventSource-Objekt zu haben. Daher muss ich das erste events-Objekt auf der zweiten onopen-Methode schließen und dann wird das OnMessage-Ereignis der zweiten die Daten in die Tabellenansicht streamen. Betrachten Sie die folgenden Code läuft auf einem Onclick-Ereignis,Schließe erste eventsource auf OnOpen Methode des zweiten

if(firstEventSource) { 
    firstEventSource.close(); 
} 
var firstEventSource = new window.EventSource(endPoint); 
firstEventSource.onmessage = function (evt) { 
    //... code goes here 
} 

Die oben genannten Arbeiten Code, aber, wie ich eher erwähnt als direkt die firstEventSource zu schließen, muss ich es schließen, indem sichergestellt wird, dass die zweite Ereignisquelle es ist Verbindung geöffnet hat.

+0

max-Verbindungen pro Server ist die maximale Anzahl von Verbindungen, die der Browser zum Server herstellen kann. Ich sehe in deiner Frage nicht, wie du dahin kommst? Warum kannst du nicht einfach eine 'EventSource' verwenden? – baynezy

+0

@baynezy, wenn ich Max-Verbindungen sage, ist es die maximale Anzahl der aktiven Verbindungen. Wie ich in der Abfrage erwähnt habe, habe ich diese Funktion in einem onclick-Ereignishandler und wenn ich dann ein neues window.EventSource-Objekt für jeden Klick erstelle, dann erlaubt es mir nicht, mehr als 6 zu gehen. Der "endPoint" wird hier streamen die Daten kontinuierlich vom Server. – Sai

Antwort

0

Verwenden Sie nicht mehrere EventSource. Verwenden Sie ein und benannte Ereignisse verwenden, anstatt http://cjihrig.com/blog/the-server-side-of-server-sent-events/

diese Weise ein EventSource erstellen und dann einen API-Aufruf an den Server machen Onclick die Konfiguration der einzelnen EventSource ändern.

+0

danke für die Freigabe der URL. In meinem Szenario habe ich diesen Endpunkt, an den ich eine Abfrage aus dem Textfeld anhängen muss, etwa so: var firstEventSource = new window.EventSource (endPoint + '? LastEventId = 0 & s =' + $ scope.values); wo $ scope.values ​​ist ein Array ... also wundern Sie sich in diesem Fall, wenn ich eine EventSource verwenden werde und dann, wenn ich seine Konfiguration ändern muss (in diesem Fall der Endpunkt). wie kann ich das tun ... irgendwelche Beispiele wären eine große Hilfe. – Sai

+0

Also was ich meine ist, dass Sie eine EventSource haben, aber Sie machen AJAX-Aufrufe an Ihren Server, diese können die Abfrageparameter enthalten, die Sie erwähnten. Verwenden Sie das, um das Verhalten der vorhandenen EventSource von diesem Punkt aus zu ändern. Es hat keinen Wert, ständig Verbindungen zu zerstören und zu schaffen. – baynezy

Verwandte Themen