如何测试Facebook实时更新

6
为了发布应用程序的实时更新,Facebook 需要对我的服务器执行 post 请求。
问题是,我的服务器在家里的电脑上,无法从互联网公开访问。将服务器上线以实现此目的似乎很麻烦... 无法附加调试器、fiddler 等...
那么测试 Http 终端的最佳方法是什么呢?模拟 Facebook 服务器的集成测试?尝试使用防火墙/NAT 让 Facebook 与我的家庭计算机通信?
有任何想法吗?
6个回答

7
你可以使用ngrok - https://ngrok.com/ - 这是一个免费(按你所能支付的费用)的服务,它可以满足你的需求。Localtunnel服务已经停止了,并且开发者也推荐使用ngrok。

4
过去,我使用LocalTunnel来实现这个功能。它是一个很好的SSH隧道封装,有效地为您分配了localtunnel.com上指向本地主机端口的子域名。
所以基本上,当您运行它时,它会返回一个外部可访问的子域名,例如xyz.localtunnel.com,其端口80将指向您在本地计算机上指定的端口。
您可以在以下网址找到它:http://progrium.com/localtunnel/ 对于测试各种pubsubhubbub订阅源(如Facebook的),它非常有用。

2

好的!我认为NAT应该是最佳选择,我不认为它不会起作用。你应该试一试。


2

这其实非常简单 - 登录我的家用路由器,将端口80的端口转发设置到我的计算机的本地IP地址上,在Windows防火墙中放行端口80,并在浏览器中导航到我的公共IP地址。

在此处实施接收器示例:https://github.com/facebook/real-time/tree/master/samples


0

不,你不能仅使用ngrok来模拟Facebook实时更新,因为你必须使用你的ngrok地址向Facebook服务器发出调用以进行验证(如果你找到了如何做到这一点,请告诉我:p)。 我使用openshift服务器接收Facebook实时数据,然后将从Facebook接收到的每个JSON数据发布到我的ngrok地址。所以整个过程是:

  1. 设置一个openshift服务器来接收Facebook通知
  2. Facebook向你的openshift发送通知
  3. 你的openshift将数据(按接收顺序)发送到你的ngrok地址

如果你必须在本地网站(如www.website.dev/fb-notifications/)上接收Facebook通知,则在你的本地主机文件夹中创建一个脚本来接收openshift帖子(我们称之为tunelscript.php)。整个过程如下:

  1. 建立一个OpenShift服务器来接收Facebook通知
  2. Facebook向您的OpenShift发送通知
  3. 您的OpenShift通过您的ngrok地址(perso.ngrok.com/tunelscript.php)将数据(按接收顺序)发送到您的隧道脚本
  4. 从您的隧道脚本中转发数据到您的本地网站(tunelscript.php => www.website.dev/fb-notifications/)

这就是隧道技术B-)


1
普通的ngrok对此工作很好。当您在进行HTTP POST请求时,需要在callback_url字段中传递您正确的http://yoursite.ngrok.com/callback URL,以便在https://graph.facebook.com/subscriptions上进行设置。 - Alo Sarv

0
唯一的解决方案是获取一个公开访问的Web服务器,以便实时更新能够回调。有很多允许服务器端脚本的免费Web主机,也有很多付费Web主机。Stackoverflow真的不是获取Web托管的地方。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接