Нежелательные уведомления от сервера к клиенту через http - PullRequest
0 голосов
/ 17 июля 2010

Я работаю в системе, подобной dropbox, и мне интересно, как клиент получает уведомление при изменении файлов на стороне сервера.У меня сложилось впечатление, что как dropbox, так и ubuntu one работают через порты HTTP и работают следующим образом: 1. если файлы изменяются на клиентском компьютере, inotify обнаруживает это и выполняет предварительную передачу с клиента на сервер.(Я получаю эту часть) 2. Если файлы изменяются на сервере, с сервера клиенту отправляется простое незапрошенное уведомление (просто сообщение о времени синхронизации).Затем клиент инициирует синхронизацию с сервером.

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

Кроме того, какие протоколы обмена сообщениями будут использоваться для таких действий?Я планировал сделать это через HTTP или SSH, но у меня нет вложения, чтобы сделать это.

Ответы [ 2 ]

1 голос
/ 17 июля 2010

Я не уверен, что Dropbox использует, но это может быть websockets (маловероятно, что это довольно новая и не широко развернутая вещь) или, скорее, ожидающий Ajax-запрос от клиента к серверу - на что сервер отвечает только тогда, когда у него есть новые вещи для клиента. Последний является распространенным способом реализации (хорошо, хорошо - «взломать» ;-) некоторой формы «продвижение сервера» с HTTP.

0 голосов
/ 08 февраля 2011

Потребовалось небольшое исследование сетей, чтобы понять, как это будет работать, но это гораздо более тривиально, чем я ожидал.Я сейчас использую стандартные сокеты Java для этого.Запустите процесс сервера, который прослушивает сокет-соединение.Затем запустите клиент, который подключается к серверу.

Как только соединение установлено, сообщения могут быть отправлены обратно и четвертым.Это работает через NAT (преобразование сетевых адресов), который является стандартным методом для маршрутизации пакетов в частных сетях за брандмауэром.

...