2012-05-09 1 views
1

Я не уверен, правильно ли задал вопрос. Я имею в виду локально установленное программное обеспечение, которое часто называют «агентом», который поддерживает регулярную связь с некоторым хостом через HTTP. например Когда вы устанавливаете LogMeIn, Агент связывается с сервером logmein.com, поэтому, когда вы посещаете logmein.com с помощью своего веб-браузера и подключаетесь к агенту, сервер может инициировать связь. Агент, однако, не является веб-сервером, и никакие порты не перенаправляются Агенту. Итак, Агент постоянно опросил сервер, спрашивая, как сломанная запись: «Могу я вам помочь? Могу я вам помочь? Могу я вам помочь?» Или HTTP-соединение от Агента к серверу каким-то образом остается открытым? Я знаю, что вы можете открыть http-соединение, но A) как, и B), как долго? Агент должен действовать как менее раздражающая сломанная запись, спрашивая: «Могу ли я вам помочь?» Но «еще?»? с гораздо большим промежутком времени между каждым вопросом? Или агент может задать один раз и ждать неопределенно долго, снова спрашивая, только когда узнает, что соединение было отключено?Как работают клиентские веб-агенты?

Подводя итог, я хотел бы создать небольшую небольшую пробную программу для того, чтобы попробовать мою руку при написании клиент-серверного приложения, которое общается через Интернет с помощью HTTP. Любая из сторон должна иметь возможность инициировать команды/запросы. Агент, скорее всего, свяжется с сервером, используя какой-то API, возможно, RESTful. Когда я начну эксперимент, я буду использовать Perl. Было бы забавно создать проект Hello World, который бы имел образцы на многих языках для многих платформ, как писать агента и как общаться с сервером. Код агента выполняет действия на стороне клиента (например, определяет общедоступный IP-адрес) и отправляет данные на сервер. Сервер будет действовать на данные (например, хранить IP-адрес в базе данных). Сервер также может инициировать команду для Агента (например, Эй, Агент! Какой у вас тип процессора?) Правильная аутентификация/авторизация между Агентом и Сервером, конечно, является необходимостью.

Есть ли существующие проекты для моделирования? Какие-либо существующие документы? Возможно, я просто пропустил терминологию, и если бы я просто знал, что все, о чем я прошу, можно судить по термину foo, тогда двери будут открыты для того, что я могу найти в поисках!

+0

Попробуйте http://windowssecrets.com/top-story/run-your-pc-from-afar-securely-and-easily/ и http://www.tek-tips.com/viewthread.cfm?qid = 1598113. Logmein использует порт 80 и 443 битв! –

+0

В Windows LogMeIn - это служба Windows. Я не уверен, как он общается, так как я не использовал его в течение длительного времени. Я использовал Dropbox, и он просто спрашивает сервер так часто, если есть что синхронизировать. Вы можете увидеть это сообщение, если вы установите Fiddler. – dontangg

ответ

1

Я просмотрел код Ubuntu's Landscape. Он использует Twister для веб-сайтов Python - веб-сервер для веб-сайтов HTML5. Поэтому я бы сказал, что то, что я искал в ответ, - это Websockets (двунаправленная связь). Теперь это открыло множество опций: node.js, twister, mojolicious и многие другие в качестве веб-серверов. Оказывается, использование Ajax для опроса каждые несколько секунд - очень плохая идея - подавляющее нарушение на веб-серверах. Держите соединение открытым.

Смежные вопросы