Я немного устала от нюансов протокола HTTP и мне интересно, может ли он поддерживать публикацию / подписку напрямую?
HTTP - протокол ответа на запрос. Клиент отправляет запрос, а сервер отправляет ответ.
В HTTP 1.0 новое соединение было установлено для каждого запроса.
Теперь HTTP 1.1 улучшил HTTP 1.0, позволив клиенту держать соединение открытым и делать несколько запросов.
Я понимаю, что вы можете обновить HTTP-соединение до веб-сокета для быстрой двусторонней связи. Что меня интересует, так ли это строго необходимо?
Например, если я запрашиваю ресурс "http://somewhere.com/fetch/me/slowly"
Свободен ли сервер, чтобы ответить дважды дважды?
Такие, как первый с 202 принято
а затем вскоре с содержанием, когда оно будет готово,
но без предварительной отправки клиентом дополнительного запроса?
1012 * т.е. *
Client: GET http://somewhere.com/fetch/me/slowly
Server: 202 "please wait..."
Server: 200 "here's your document"
Было бы правильно внедрить службу публикации / подписки таким образом?
Например:
Client: http://somewhere.com/subscribe
Server: item 1
...
Server: item 2
У меня сложилось впечатление, что это может сработать, потому что клиенты, как правило, имеют цикл обработки событий, наблюдающий за соединением, но технически ошибочны (потому что клиент, следующий протоколу, не должен быть реализован таким образом).
Однако, если вы используете chunked Transfer Encoding, это будет работать.
HTTP / 2, кажется, тоже позволяет это, но я не уверен, что что-то изменилось, чтобы сделать это возможным.
Я не видел много дискуссий по этому поводу в отношении pub / sub, так что, если что-то не так с использованием простого HTTP / 1.1 с или без чанкованного кодирования?
Если это работает, зачем вам такие вещи, как RSS или ATOM?