2010-07-17 106 views
0

我的工作就像一个系统Dropbox和我想知道如何当文件更改在服务器端,客户端得到通知。我的印象是dropbox和ubuntu都通过HTTP端口运行,其工作原理如下: 1.如果客户机上的文件发生变化,inotify会检测到它并执行从客户机到服务器的推送。 (我得到这部分) 2.如果文件在服务器上发生了一个简单的未经请求的通知(只是一条消息,指示“同步时间”)从服务器发送到客户端。然后客户端启动到服务器的同步。不请自来的通知,客户端通过HTTP

我真的不关心我在做这个的语言。我只是想知道客户如何被联系。具体来说,如果客户端在具有自己的本地IP地址的防火墙后面怎么办?服务器如何找到它?

此外,什么样的消息协议将被用来做这样的事情?我打算通过HTTP或SSH做这件事,但我没有附件。

回答

0

花了一点点研究网络看到这是如何工作的,但它远远然后我预期的更简单。我现在正在使用标准的Java套接字。启动侦听套接字连接的服务器进程。然后启动连接到服务器的客户端。

一旦建立了连接,消息就可以被发送回第四个。这通过NAT(网络地址转换)起作用,NAT是用于在防火墙后的专用网络上路由数据包的标准方法。

1

我不确定Dropbox正在使用什么,但它可能是websockets(不太可能,它是一个非常新的,没有广泛部署的东西),或者更可能是从客户端到服务器的未决Ajax请求 - 服务器只在客户端有新东西时才会响应。后者是通用的方式来实现(好吧,行 - “破解”;-)某种形式的HTTP服务器推送。