克服防火墙的限制

时间:2010-06-26 15:51:53

标签: ruby proxy persistence

如果普通的互联网用户希望在他们的计算机上联系TCP服务,但不必经历防火墙翻译的麻烦,我认为我说“最好的”方法是通过拥有第3个中间的一方将接受来自用户家用计算机和他们的旅行计算机的连接并充当代理。

但这究竟是如何实现的?显然,旅行计算机只要需要信息就联系代理服务器,但是如何将其转发回家用计算机?家用计算机是否与代理保持一致的连接,允许双向数据流?

如果是这种情况,我将如何设计一个Ruby / Sinatra服务器来跟踪这些永久连接,然后转发旅行计算机的查询? (假设家用计算机的服务可以进行建立链接所需的任何调用)

谢谢你们!

修改

我认为我过于概括,我正在转发HTTP请求(或者至少来自旅行计算机的请求将基于HTTP),所以我认为使用sinatra捕获来自旅行者的请求是有意义的。我的问题是如何保持从家用计算机到代理的开放连接,以便我可以立即转发请求。

我知道可以完成持久的HTTP连接,但是它们有点复杂,我最好让家用计算机不断与代理建立较低级别的连接并将请求推送到那个位置?

1 个答案:

答案 0 :(得分:1)

我认为您的一般方法可行 - 通过让旅行计算机向代理发送信号并让家庭计算机从代理请求新信息,将事件消息从一台计算机转发到另一台计算机。

如果您想要更多连续数据流,您可能不想使用sinatra - 专门用于从旅行计算机接收数据。查看事件机器 - http://wiki.github.com/eventmachine/eventmachine/