我试图了解服务器发送的事件。我网站的其余部分使用cherrypy 提供服务,所以我也想让他们在这个平台上工作。
我用来公开 SSE 的方法:
@cherrypy.expose
def interlocked(self, _=None):
cherrypy.response.headers["Content-Type"] = "text/event-stream;charset=utf-8"
if _:
data = 'retry: 400\n'
while not self.interlockUpdateQueue.empty():
update = self.interlockUpdateQueue.get(False)
data += 'data: ' + str(update) + '\n\n'
return data
else:
def content():
while not self.interlockUpdateQueue.empty():
update = self.interlockUpdateQueue.get(True, 400)
data = 'retry: 400\ndata: ' + str(update) + '\n\n'
yield data
return content()
interlocked._cp_config = {'response.stream': True, 'tools.encode.encoding':'utf-8'}
在 chrome (win 7) 和 chromium (ubuntu 12.04) 上进行测试,这将为流提供服务,并且使用它的页面工作正常。但是,它一次只能运行一个系统。如果我同时让 chrome 和 chromium 读取流,则只有第一个获取流,另一个获取任何内容。如何让两个系统同时访问流?