HTTP-клиент, действующий как псевдосервер - PullRequest
0 голосов
/ 03 сентября 2011

Допустим, я собираюсь развернуть серверное приложение, которое, вероятно, будет размещено за NAT / межсетевым экраном, и я не хочу просить пользователей настроить соответствие портов NAT. Другими словами, подключения к серверу невозможны, но мое приложение по своей природе является серверным приложением, т. Е. Оно отправляет обратно объекты по URI.

Теперь я думаю о том, чтобы периодически инициировать соединения с сервера, чтобы посмотреть, на какие запросы нужно отвечать. Я собираюсь использовать HTTP через порт 80 как то, что, вероятно, будет работать через NAT / firewall практически из любого места.

Вопрос в том, существуют ли какие-либо стандартные соображения и общие практики реализации клиента, который может выступать в качестве сервера на уровне приложений, особенно с использованием HTTP? Какие-нибудь специальные заголовки HTTP? Дизайн выкройки?

например. Я думаю о следующей схеме:

  • Клиент (который является моим логическим сервером) отправляет фиктивный HTTP-запрос на сервер
  • Сервер отвечает нестандартными заголовками X-Request-URI:, X-Host:, X-If-Modified-Since: и т. Д., Другими словами, заголовки запроса, обернутые в X-xxx, поскольку они не являются стандартными в этой ситуации; также просит сохранить соединение живым
  • Клиент отвечает запросом POST, который отправляет запрошенный объект; опять же, используются заголовки в оболочке (например, X-Status: и т. д.)

Если нет более "стандартного" способа сделать что-то подобное, как вы думаете, мой подход правдоподобен?

Редактировать : здесь произошла интересная дискуссия на Reddit

1 Ответ

0 голосов
/ 03 сентября 2011

Я сделал нечто подобное.Это очень распространено.Клиент инициирует соединение с Сервером и поддерживает соединение ALIVE.Если сеанс выключен, клиент будет повторно инициировать.Когда сеанс завершен, сервер может отправить что-нибудь клиенту, так как его клиент инициировал.

...