如何使用 CGI + Python 获取 SSE 最后事件 ID
How to get SSE Last Event ID with CGI + Python
我正在使用服务器发送事件 (SSE) 将数据推送到前端。我仅通过研究其 RFC https://www.w3.org/TR/2011/WD-eventsource-20111020/ 就能够实现其中的大部分内容。我唯一坚持的部分是 SSE 是否从错误连接重新连接。
文档说,当 SSE 连接重新连接时,它会将 Last-Event-ID 添加到 Header 数据中。我不知道如何从我的脚本中获取它。
我使用 lighttpd 作为我的网络服务器,cgi 用于 运行 我的脚本,python 2.7 作为我的脚本语言。
我试图读取 os.environ,但它不包含与 SSE 最后收到的 ID 相关的任何内容。
有谁知道我怎样才能得到最后收到的事件 ID?
我最终弄明白了这一点,希望这对以后的任何人都有用。 lastEventId 在协议的后面静默使用。因此,如果连接暂时断开然后重新连接,则使用 lastEventId。所有错过的 SSE 都会排队,并且只会发送大于 lastEventId 的 SSE。但是,如果连接永久断开,或断开时间超过 x 分钟(取决于浏览器),则 SSE 连接将终止。将不会发送 lastEventId,因为它将被视为新连接。
我可以通过将 lastEventId 附加到 SSE 的 GET 请求来解决这个问题。所以...
/var/www/SSE.py?lastEventId=100
我正在使用服务器发送事件 (SSE) 将数据推送到前端。我仅通过研究其 RFC https://www.w3.org/TR/2011/WD-eventsource-20111020/ 就能够实现其中的大部分内容。我唯一坚持的部分是 SSE 是否从错误连接重新连接。
文档说,当 SSE 连接重新连接时,它会将 Last-Event-ID 添加到 Header 数据中。我不知道如何从我的脚本中获取它。
我使用 lighttpd 作为我的网络服务器,cgi 用于 运行 我的脚本,python 2.7 作为我的脚本语言。
我试图读取 os.environ,但它不包含与 SSE 最后收到的 ID 相关的任何内容。
有谁知道我怎样才能得到最后收到的事件 ID?
我最终弄明白了这一点,希望这对以后的任何人都有用。 lastEventId 在协议的后面静默使用。因此,如果连接暂时断开然后重新连接,则使用 lastEventId。所有错过的 SSE 都会排队,并且只会发送大于 lastEventId 的 SSE。但是,如果连接永久断开,或断开时间超过 x 分钟(取决于浏览器),则 SSE 连接将终止。将不会发送 lastEventId,因为它将被视为新连接。
我可以通过将 lastEventId 附加到 SSE 的 GET 请求来解决这个问题。所以...
/var/www/SSE.py?lastEventId=100