Допустим, я собираюсь развернуть серверное приложение, которое, вероятно, будет размещено за 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