Как отправить несколько HTTP-ответов с интервалами с сервера с помощью Python
Есть ли способ отправить несколько HTTP-ответов клиенту, как только соединение открыто? Например, предположим, что это игровой сервер, написанный на Python и работающий на PaaS, например OpenShift. И клиент отправляет запрос GET с запросом connect в нем. И я хочу иметь возможность отправлять "обновления" с сервера один раз в секунду клиенту. Я попытался сохранить соединение открытым и написать клиенту, но это не сработало. Все, что я мог сделать, это клиент мог отправить "запрос на обновления" каждый во-вторых, и сервер мог бы ответить на это. Есть ли обходной путь для этого?
Заранее благодарю.
1 ответ:
То, что вы описываете, - это websocket, который представляет собой постоянное соединение между сервером и клиентом. Я бы рекомендовал вам использовать socket.io , потому что если websockets не поддерживаются вашим браузером пользователей, то он возвращается к другим протоколам, которые будут служить той же цели.
Для использования сокетов или socket.io, вы должны будете использовать библиотеку python на сервере, который поддерживает их, а также библиотеку, которая поддерживает сопрограммы, такие как gevent или tornado. Проверять что-то вроде gevent-socketio (хотя он давно не обновлялся), или поиск по pip,
pip search socketio
для некоторых других вариантов.Если вы предпочитаете не реализовывать свое собственное решение, другой вариант-использовать службу обмена сообщениями, такую как Pubnub или Pusher. Я использую Pubnub на моем собственном приложении python+openshift, и интеграция-это ветер. Эти службы обмена сообщениями заботятся о поддержании постоянных соединений с клиентами, и когда вы хотите обновить один клиент или несколько клиентов одновременно, вы просто отправляете одно сообщение в службу обмена сообщениями, и они передают сообщение предполагаемым получателям.