Держите порт открытым - iPhone - PullRequest
1 голос
/ 29 июля 2011

У меня есть два сервера (домашний и удаленный) и программа на iPhone. IPhone должен держать порт открытым, пока не завершится весь процесс, иначе вся система выйдет из строя.

Итак, iPhone получает строку данных с «домашнего» сервера (по почте), добавляет к нему некоторые данные и подключается к «удаленному» серверу через поток портов. Как только порт открыт и данные отправлены на «удаленный», он получает ответ от удаленного и перенаправляет его на «домашний». Как только «дом» получает его, он меняет некоторые вещи и отправляет его обратно на iPhone, который должен перенаправить информацию на «удаленный» через тот же, все еще открытый, порт.

Я не могу закрыть поток портов и снова открыть его, потому что на «удаленном» сервере все изменится и сломает весь процесс.

Вот быстрая картинка. Спасибо, MS Paint. Server Connection

Спасибо заранее, Джеймс

1 Ответ

1 голос
/ 29 июля 2011

Если вы управляете как локальным, так и удаленным сервером, вы можете убедиться, что используется HTTP 1.1 и что соединение использует заголовок «Keep-Alive».

Также может помочь метод XMMP-привязка для эмуляции семантики долгоживущего двунаправленного соединения.

Если у вас нет контроля над серверами, то я боюсь, что вы немного самостоятельны, поскольку Keep-Alive был введен правильно для поддержки постоянных или долгоживущих соединений.

В этом случае, я думаю, что единственная возможность сохранить открытое соединение - это какой-то опрос, то есть, пока iPhone ожидает ответа от одного сервера, он отправляет запрос на другой сервер каждый раз. секунд, будучи n ниже тайм-аута соединения с сервером.

Этот подход будет работать, только если сервер не закрывает соединение сразу после отправки ответа.

...