1

我不确定我是否正确地问了这个问题。我指的是本地安装的软件,通常称为“代理”,它通过 HTTP 与某些主机保持定期通信。例如,当您安装 LogMeIn 时,代理会与 logmein.com 服务器保持通信,因此当您使用 Web 浏览器访问 logmein.com 并连接到代理时,服务器能够启动通信。然而,代理不是网络服务器,也没有任何端口转发到代理。那么,代理是否像破纪录一样不断地轮询服务器,“我可以帮助你吗?我可以帮助你吗?我可以帮助你吗?” 还是从代理到服务器的 http 连接以某种方式保持打开状态?我知道您可以保持 http 连接打开,但是 A)如何,B) 持续多长时间?特工是否需要表现得像一个不那么烦人的破纪录问:“我能帮你吗?然而?然而?然而?” 每个问题之间有更多的时间?还是代理可以询问一次并无限期地等待,只有在得知连接已断开时才再次询问?

底线是,我想创建一个小的示例程序,以尝试编写一个使用 HTTP 通过 Internet 进行通信的客户端/服务器应用程序。任何一方都需要能够发起命令/请求。代理可能会使用某种 API(可能是 RESTful)与服务器通信。当我开始实验时,我将使用 Perl。创建一个 Hello World 项目会很有趣,该项目将有多种语言的示例,适用于多种平台,如何编写代理以及如何与服务器通信。代理代码将做客户端的事情(例如确定公共 IP 地址)并将数据发送到服务器。服务器将对数据采取行动(例如,将 IP 地址存储在数据库中)。服务器还可以向代理发起命令(例如,嘿,代理!什么?

是否有任何现有的项目可以建模?任何现有的文件?也许我只是缺少术语,如果我只知道我所要求的一切都可以用 foo 这个词来概括,那么我可以在搜索中找到的大门就会敞开!

4

1 回答 1

1

我查看了 Ubuntu 的 Landscape 代码。它使用 Python 的 Twister——一个用于 HTML5 Websockets 的网络服务器。所以我想说我在答案中寻找的是Websockets(双向通信)。现在已经开辟了丰富的选项,node.js、twister、mojolicious 以及更多作为 Web 服务器的选项。事实证明,使用 Ajax 每隔几秒进行一次轮询是一个非常糟糕的主意——对 Web 服务器的压倒性抨击。保持连接打开。

于 2012-06-05T14:16:23.357 回答