Как отправить несколько HTTP-ответов с интервалами с сервера с помощью Python


Есть ли способ отправить несколько HTTP-ответов клиенту, как только соединение открыто? Например, предположим, что это игровой сервер, написанный на Python и работающий на PaaS, например OpenShift. И клиент отправляет запрос GET с запросом connect в нем. И я хочу иметь возможность отправлять "обновления" с сервера один раз в секунду клиенту. Я попытался сохранить соединение открытым и написать клиенту, но это не сработало. Все, что я мог сделать, это клиент мог отправить "запрос на обновления" каждый во-вторых, и сервер мог бы ответить на это. Есть ли обходной путь для этого?

Заранее благодарю.

1 2

1 ответ:

То, что вы описываете, - это websocket, который представляет собой постоянное соединение между сервером и клиентом. Я бы рекомендовал вам использовать socket.io , потому что если websockets не поддерживаются вашим браузером пользователей, то он возвращается к другим протоколам, которые будут служить той же цели.

Для использования сокетов или socket.io, вы должны будете использовать библиотеку python на сервере, который поддерживает их, а также библиотеку, которая поддерживает сопрограммы, такие как gevent или tornado. Проверять что-то вроде gevent-socketio (хотя он давно не обновлялся), или поиск по pip, pip search socketio для некоторых других вариантов.

Если вы предпочитаете не реализовывать свое собственное решение, другой вариант-использовать службу обмена сообщениями, такую как Pubnub или Pusher. Я использую Pubnub на моем собственном приложении python+openshift, и интеграция-это ветер. Эти службы обмена сообщениями заботятся о поддержании постоянных соединений с клиентами, и когда вы хотите обновить один клиент или несколько клиентов одновременно, вы просто отправляете одно сообщение в службу обмена сообщениями, и они передают сообщение предполагаемым получателям.