Как реализовать асинхронный ответ на запрос в веб-службе на основе REST

У меня есть система веб-служб на основе REST. Мне нужно найти способ поддержать здесь модель публикации/подписки. Как вы знаете, REST связь между клиентом и сервером осуществляется по протоколу HTTP. Я использую веб-сервер apache (PHP) в бэкэнде для обработки всех запросов REST. Вопрос в том, как использовать PHP или что-то еще (на стороне веб-сервера) для поддержки такой модели Pub/Sub. Один из типичных сценариев:

1) Клиент подписывается на изменение объекта (GET /config/object/?type=async) 2) Клиент не блокирует этот запрос, так как это асинхронный вызов. 3) Сервер принимает подписку и ожидает события. 4) Сервер публикует клиенту необходимые данные по мере возникновения события.

В основном мне нужно знать, как реализовать все эти четыре шага выше.


person user422377    schedule 17.08.2010    source источник


Ответы (2)


Вероятно, вы ищете что-то вроде PubSubHubbub —

http://code.google.com/apis/pubsubhubbub/

Позволив PubSub внедрить для вас хаб, вы избавитесь от необходимости блокировать вызовы на сервер.

Они уже реализовали примеры подписчиков и издателей на разных языках.

person Arunabh Das    schedule 17.08.2010

Если вы еще этого не сделали, вам следует прочитать мнение Роя Филдинга о различных подходах к PubSub. http://roy.gbiv.com/untangled/2008/paper-tigers-and-hidden-dragons

person Darrel Miller    schedule 17.08.2010
comment
Я читал это и не было полезно. Они говорили только о некоторых проблемах дизайна и о том, как представлять объекты. Я хочу реализовать этот механизм связи. Например, как уведомить клиента с сервера, когда произойдет событие. - person user422377; 18.08.2010