http-сервер комета пиона - PullRequest
1 голос
/ 01 июня 2011

Я пытаюсь эффективно реализовать кометоподобную функциональность, используя HTTPServer класс boost :: pion.

По сути, в моей функции handleURI я хотел бы отложить возврат результатов клиенту до тех пор, пока сервер не будет готов ответить (например, пока другой пользователь не отправит сообщение первому пользователю, чтобы использовать простой комета приложение "Привет, мир").

Что мне делать? Поместить состояние в стек и выйти без вывода сообщений, не создавая HTTPResponseWriter?

Ура!

1 Ответ

2 голосов
/ 01 июня 2011

Установите событие ASIO тайм-аута для вашего соединения, чтобы вы могли получить соединение через 20 минут или что-то подобное. Я не знаю насчет Boost Pion, но в ASIO вы хотели бы зарегистрировать обработчик чтения, который ловит при закрытии соединения, и обработчик тайм-аута, чтобы предупредить вас о том, когда истекло время ожидания соединения. Включите в своем сокете TCP keep alives, чтобы определить, когда сокет должен быть получен в случае его исчезновения (хотя tcp keep alives не является гарантией, поэтому не полагайтесь исключительно на них - не все клиенты поддерживают tcp keep aive). Что касается таймера, посмотрите следующий пример таймера:

https://github.com/sean-/Boost.Examples/blob/master/asio/timer/timer.cc

...