Я пытаюсь разобраться в событиях, отправленных сервером. Остальная часть моего сайта обслуживается с помощью 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) и chrome (ubuntu 12.04) обслуживает поток вверх, и страница, использующая его, работает нормально. Однако он работает только с одной системой за раз. Если у меня есть и хром, и хром, читающие поток, только первый получает поток, а другой ничего не получает. Как предоставить обеим системам доступ к потоку одновременно?