【问题标题】:Can a computer behind a NAT-router receive realtime-updates from facebook?NAT 路由器后面的计算机可以接收来自 facebook 的实时更新吗?
【发布时间】:2012-02-08 17:13:49
【问题描述】:

我目前正在编写一个使用图形 API 集成 facebook 的桌面应用程序。我想实现实时更新(http://developers.facebook.com/docs/api/realtime/),但在文档中说您必须建立一个 http 服务器,facebook 将处理该服务器以发送更新到。我现在的问题是我的盒子位于只有一个 IP 地址的路由器后面(因此路由器使用 NAT)。 facebook 是否仍然可以联系我的网络服务器向我发送更新?

【问题讨论】:

    标签: facebook networking facebook-graph-api webserver nat


    【解决方案1】:

    @kohlehydrat:每个网络服务器都需要有一个可以从 Internet 上“任何地方”访问的 IP 地址。由于您的网络服务器位于只有一个 IP 的 NAT 后面,我严重怀疑 Facebook 能否访问您的网络服务器。

    但是,看看您是否可以配置 NAT,以便为您的应用程序保留一个专用端口。

    例如:

            10.122.48.222:4231 
    traffic to port 4231 is directed towards your application. 
    10.122.48.222 is outward facing NAT IP address.
    

    我不确定我们是否可以这样做,但这是一个想法。

    【讨论】:

      【解决方案2】:

      路由器应捕获端口 80 请求(或您的网络服务器应该侦听的任何端口)并将其转发到您的内部计算机端口 80,最好采用一致的 NAT 样式。

      基本上,如果双方都能找到对方,则基于 IP 的正确路由通信不应该成为问题。

      【讨论】:

      • 所以我可以简单地(用java)创建一个网络服务器,我不必担心facebook是否能够访问它? / 完全透明处理?
      • @kohlehydrat:如果您的路由器有静态 IP 地址,可以。如果您的路由器具有动态 IP 地址,因为您的 Internet 服务提供商使用一组 IP 地址,那么没有。
      【解决方案3】:

      您需要执行所谓的“端口转发”。 我最初遇到了类似的问题,然后我转发了我的端口,在我的 IP 中 Public本地 仅限于公司。 现在我的问题解决了。 希望这可以帮助。

      【讨论】:

        【解决方案4】:

        这个问题已经结束了,但是由于您还没有收到这个特定的答案(我相信大多数 facebook 开发人员为了在防火墙后面进行开发而这样做),所以我将在此处发布:

        您可以将您的机器反向隧道连接到任何具有公开可用 IP 的机器。 见blog post on this topic

        在很多 facebook sdks 中,甚至包含此功能(例如,facebooker,一个 ruby​​ gem 提供了在设置适当的设置后 rake facebooker:tunnel:start 的功能)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-06
          • 1970-01-01
          相关资源
          最近更新 更多