我正在尝试在Chrome中使用SSE(服务器发送事件)实现一个股票应用程序。但是在我找到的每个示例中,无论是自己写的还是别人写的,连接都会在3-4秒钟后关闭。即使在运行以下示例时:http://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_sse,您也可以看到每隔3-4秒钟就会收到一次更新。这不是由于服务器实现(例如此示例中的“demo_sse.php”),而是由于每隔3-4秒钟就会重新连接。
如果我将以下内容添加到上面的示例中:
如果我将以下内容添加到上面的示例中:
source.onerror=function(event)
{
document.getElementById("result").innerHTML+=source.readyState+ "<br />";
};
您可以清楚地看到,readyState为0,意味着:“连接尚未建立,或已关闭且用户代理正在重新连接。”(摘自官方EventSorce API文档)。
我也自己编写了一个服务器端脚本,以下是代码(使用Python Bottle Web框架):
@route('/events')
def positions():
response.content_type = 'text/event-stream'
response.set_header('Cache-Control', 'no-cache')
now = datetime.datetime.now().time().replace(microsecond=0)
return "data: %s\n\n"%now
我也遇到了同样的问题,每隔3-4秒就需要重新连接。
因此我想知道的是如何在会话期间保持连接的。
谢谢您的帮助, Omer。
response.content_type = 'text/event-stream' response.set_header('Cache-Control', 'no-cache') now = datetime.datetime.now().time().replace(microsecond=0) return "data: %s\n\n"%now但我得到了同样的结果。每3-4秒重新连接。 - omer bach