2016-07-21 16 views
0

Ich verwende Server Sent Events (SSE), um Daten an das Frontend zu übertragen. Ich war in der Lage, das meiste davon nur durch die Erforschung seiner RFC https://www.w3.org/TR/2011/WD-eventsource-20111020/ zu implementieren. Der einzige Teil, an dem ich festhalte, ist, wenn die SSE sich von einer fehlerhaften Verbindung wieder verbindet.So erhalten Sie die letzte SSE-Ereignis-ID mit CGI + Python

Die Dokumentation besagt, dass bei einer erneuten Verbindung einer SSE-Verbindung die Last-Event-ID zu den Kopfdaten hinzugefügt wird. Ich habe keine Ahnung, wie ich das von meinem Skript bekommen kann.

Ich verwende lighttpd als meinen Webserver, cgi, um meine Skripte zu starten, und Python 2.7 als meine Skriptsprache.

Ich habe versucht, os.environ zu lesen, aber es enthält nichts im Zusammenhang mit der zuletzt empfangenen SSE-ID.

Weiß jemand, wie ich die letzte erhaltene Ereignis-ID bekommen kann?

Antwort

0

Ich habe das herausgefunden, also hoffentlich wird das für jeden in der Zukunft nützlich sein. Die lastEventId wird im Hintergrund des Protokolls unbeaufsichtigt verwendet. Wenn die Verbindung vorübergehend unterbrochen wird und die Verbindung dann wieder hergestellt wird, wird die lastEventId verwendet. Alle SSEs, die verpasst wurden, werden in die Warteschlange gestellt und nur diejenigen, die größer als die lastEventId sind, werden gesendet. Wenn die Verbindung jedoch dauerhaft oder länger als x Minuten unterbrochen wird (vom Browser abhängig), wird die SSE-Verbindung beendet. Eine lastEventId wird nicht gesendet, da sie als neue Verbindung betrachtet wird.

Ich konnte umgehen, indem Sie die lastEventId an die GET-Anfrage der SSE anfügen. So ...

/var/www/SSE.py?lastEventId=100