Logrus_ak
Дек. 24, 2013 16:49:50
Добрый день. Подскажите, пожалуйста, алгоритм либо где почитать о подобном.
Что есть: Клент на джаваскрипте, сервер на торнадо, Общаются между собой через вебсокеты.
Как работает: Клиент делает какие то действия, отправляет их на сервер. На сервере написано приложение, которому торнадо передает сообщения. Приложение проводит рассчеты и отсылает другим клиентам данные также через торнадо.
В чем сложность: Сервер рассылает сообщения клиентам только в случае ,если какой то клиент что-то отправил и сработал метод on_message(self, message) в обработчике.
Что нужно: Хотелось бы, чтобы сервер мог одновременно отправлять свое текущее состояние по таймингу не зависимо общаются с ним клиенты или нет. Скажем пару раз в секунду. Думал сначала про треды, но придется на каждую сессию в которой находятся 2-3 пользователя создавать отдельный тред. Сессий таких несколько тысяч. Хотелось бы, чтобы все было асинхронно.
п.с Не знал в какую тему написать в веб или в нетворк.
o7412369815963
Дек. 24, 2013 22:26:25
Logrus_ak
В чем сложность: Сервер рассылает сообщения клиентам только в случае ,если какой то клиент что-то отправил и сработал метод on_message(self, message) в обработчике.
Через веб-сокет можно в любой момент отправлять сообщения клиентам, храните все подключения клиентов в списке, и отправляйте всем сообщение в нужный момент.
Logrus_ak
На сервере написано приложение, которому торнадо передает сообщения
Каким образом передает сообщения и принимает результат?
Вот
пример запуска приложения асинхронно, если что. Для
жирных расчетов - самое-то.
Logrus_ak
Хотелось бы, чтобы сервер мог одновременно отправлять свое текущее состояние по таймингу не зависимо общаются с ним клиенты или нет. Скажем пару раз в секунду.
Может, но зачем? Сделать таймер и рассылку по списку коннектов.
Logrus_ak
Думал сначала про треды
треды при торнадо точно не нужны
Logrus_ak
Дек. 25, 2013 00:00:51
Спасибо большое. Почитал документацию и нашел класс tornado.ioloop.PeriodicCallback - используя данный класс можно добавлять периодически выполняемые задачи. То есть,можно вызывать задачу через заданное количество времени.
Ссылки по вопросу:
http://www.tornadoweb.org/en/stable/ioloop.html#tornado.ioloop.PeriodicCallbackhttp://michael-xiii.blogspot.com/2012/02/tornado-periodiccallback.html