我不确定我是否正确地提出这个问题。我指的是本地安装的软件,通常称为“代理”,通过HTTP与某些主机保持定期通信。例如安装LogMeIn时,代理会与logmein.com服务器保持通信,以便当您使用Web浏览器访问logmein.com并连接到代理时,服务器可以启动通信。但是,代理不是Web服务器,也不是任何端口转发到代理。那么,代理人是否经常轮询服务器询问破纪录,“我可以帮助你吗?我可以帮助你吗?我可以帮你吗?”或者从代理到服务器的http连接是否保持打开状态?我知道你可以保持一个http连接打开,但A)如何,和B)多久?代理人是否需要表现得像一个不那么烦人的破纪录,问道:“我可以帮助你吗?但是呢?但是呢?”在每个问题之间有更多的时间吗?或者代理人可以一次询问并无限期地等待,只有在得知连接已被删除后再次询问?
总的来说,我想创建一个小小的示例程序,用于尝试编写使用HTTP通过Internet进行通信的客户端/服务器应用程序。任何一方都需要能够发起命令/请求。代理可能会使用某种API(可能是RESTful)与服务器通信。当我开始实验时,我将使用Perl。创建一个Hello World项目会很有趣,该项目将为许多平台提供多种语言的样本,如何编写代理以及如何与服务器通信。代理代码将执行客户端事务(例如,确定公共IP地址)并将数据发送到服务器。服务器将对数据起作用(例如,在数据库中存储IP地址)。服务器也可能向代理发起命令(例如,嘿,代理!你的CPU类型是什么?)代理和服务器之间的正确认证/授权当然是必要的。
是否有任何现有项目需要建模?任何现有文件?也许我只是缺少术语,如果我只是知道我所要求的所有内容都可以用foo这个术语来概括,那么我会在搜索中找到可以找到的大门!
答案 0 :(得分:1)
我查看了Ubuntu的Landscape的代码。它使用Python的Twister - 一个用于HTML5 Websockets的Web服务器。所以我要说的是我在答案中寻找的是Websockets(双向通信)。现在已经开辟了丰富的选项,node.js,twister,mojolicious,以及许多更多的web服务器。事实证明,使用Ajax每隔几秒进行一次轮询是一个非常糟糕的主意 - 对Web服务器来说是一个压倒性的大满贯。保持连接畅通。