Всем привет, подскажите. Пишу WebSocket сервер на Tornado.
Алгоритм следующий:
-Человек подключается к серверу
-Передает в message - параметры {param1: 1, param2: 2}
-Сервер на основе этих параметров из бд выдает ответы, т.е., что-то вроде live-ленты. Каждые 10 секунд в бесконечном цикле с time.sleep отправляет результаты. И все хорошо, но в таком режиме работает он только с 1 клиентом.
Если, просто, закрыть вкладку, то соединение так и виснет. И сервер не принимает новых сообщений
class capitalizationHandler(Handler.WebSocketHandler): #Наследую от измененного Handler'a Tornado (Ничего там интересного, просто, уменьшил код
@tornado.web.asynchronous
def on_message(self, message):
while True:
response = requests.get(url) #Через reuquests, да-да, простите меня
if response.status_code != 200:
self.write_message(u"bad parameters #3")
print(url)
break
self.write_message(response.content)
time.sleep(Config.script2Pause) #Config.script2Pause = 10 сек
if __name__ == '__main__':
ws_app = Application()
server = tornado.httpserver.HTTPServer(ws_app)
server.listen(8808)
tornado.ioloop.IOLoop.instance().start()