3

我正在尝试做的事情

我正在使用 Gmail API + Google Pub/Sub API 向我在 EC2 实例上运行的节点服务器发送推送通知,每次我在watch()ed 收件箱上收到一封电子邮件。我将服务器的域添加到console.developers.google.com的 Push 部分,然后对于 Pub/Sub API,我创建订阅并添加 Push Endpoint URL。端点看起来像这样:https://example.com/receive.

我想做的是在本地进行测试。

问题

如何让 Google 向我的本地主机服务器发送推送通知?当我测试时,我希望将新电子邮件的通知发送到http://localhost:8080/receive. 我正在考虑使用ngrok来公开 localhost - 但问题是每次 ngrok URL 更改时我都必须手动上传 Google 的证明(我拥有该域),这是一个非常令人头疼的问题。

在我的本地主机服务器上接收新电子邮件通知是否存在更好的方法?

4

3 回答 3

5

一种选择是每月向 ngrok 支付 5 美元并获得自定义子域。另一种选择是自己模拟这些通知的 HTTP POST 请求。它可以通过 curl 实现,如下所示:

$ curl -i --data @push_notification.json http://localhost:8080/receive

您需要有一个与 gmail 推送通知内容相同的本地文件“push_notification.json”。

于 2015-09-17T17:24:09.563 回答
0

Google 的推送通知是对端点的 HTTP S POST 调用。要使 HTTPS 正常工作,需要与公共域名匹配的有效 SSL 证书。因此,您将需要以下内容:

1. A public domain name.
2. an SSL certificate that matches that particular domain name. 
3. your domain should be publically reachable on port 443. 

如果您在一家公司工作,请让 IT 部门为您的主机分配一个域名,该域名可通​​过互联网访问,并带有适当的证书。

如果是用于家庭连接,则不能使用 free/noip/etc 域,例如以 *.ddns.net 结尾的域,因为您无法获得 .ddns.net 的 SSL 证书。但是您可以以每年不到 10 美元的价格获得 *.biz 或 *.info 域名。此外,如果您使用的是家庭连接并且没有固定 IP,请选择允许自动 IP 地址更新的域注册商。

对于 SSL 证书,您可以从 comodo 等公司获得 3 个月的免费试用,或 1-3 年的证书,如果您使用折扣经销商之一,这些也可能非常便宜。我建议跳过 3 个月的免费试用,因为三个月后你可能不得不再次尝试,而且你的时间可能价值超过 8 美元。

由于这些是标准 HTTPS 请求,端点应该可以在端口 443 上公开访问。例如,让端口 443 打开调制解调器/防火墙,但将其路由到更高的端口 (>1024),因此您不需要运行端点服务器以 root 身份(如果在 linux 上)。

于 2015-11-16T09:38:25.610 回答
0

您可以通过您拥有的域将本地服务器公开到 Internet (ssh)。如果您使用 Linux(流行发行版之一),则无需安装任何其他软件即可:

  1. 生成 ssh 密钥 ( ssh-keygen)
  2. 获取密钥的指纹 ( ssh-keygen -l)
  3. 在域配置中:
    • 指向(在伺服页面上检查A159.89.214.31
    • 添加TXT具有值的记录authkeyfp=fingerprint_from_point_2
  4. 将 localhost 的 8080 端口隧道连接到 your_domain.com 上的 80:ssh -R your_domain.com:80:localhost:8080 serveo.net
于 2019-01-29T08:54:37.100 回答