Google 云 Pub/Sub API - 推送电子邮件
Google Cloud Pub/Sub API - Push E-mail
我正在使用 node.js 创建一个应用程序,每次收到电子邮件时都会从 Gmail 获取推送消息,根据 CRM 中的第三方数据库对其进行检查,并在 CRM 中创建一个新字段,如果电子邮件包含在那里。我在使用 Google 的新云 Pub/Sub 时遇到问题,这似乎是从 Gmail 获取推送而无需持续轮询的唯一方法。
我已经阅读了此处的说明:https://cloud.google.com/pubsub/prereqs,但我不明白我桌面上的应用程序究竟应该如何工作。 pub/sub 似乎可以连接到经过验证的域,但我无法让它直接连接到我计算机上的 .js 脚本。我已将 api 密钥保存在 json 文件中并使用以下内容:
var gcloud = require('gcloud');
var pubsub;
// From Google Compute Engine:
pubsub = gcloud.pubsub({
projectId: 'my-project',
});
// Or from elsewhere:
pubsub = gcloud.pubsub({
projectId: 'my-project',
keyFilename: '/path/to/keyfile.json'
});
// Create a new topic.
pubsub.createTopic('my-new-topic', function(err, topic) {});
// Reference an existing topic.
var topic = pubsub.topic('my-existing-topic');
// Publish a message to the topic.
topic.publish('New message!', function(err) {});
// Subscribe to the topic.
topic.subscribe('new-subscription', function(err, subscription) {
// Register listeners to start pulling for messages.
function onError(err) {}
function onMessage(message) {}
subscription.on('error', onError);
subscription.on('message', onMessage);
// Remove listeners to stop pulling for messages.
subscription.removeListener('message', onMessage);
subscription.removeListener('error', onError);
});
但是,我收到错误,好像它没有连接到服务器,在 API 列表中我只看到错误,没有实际成功。我显然做错了什么,知道它可能是什么吗?
提前致谢!
TL;DR
您无法订阅来自客户端的推送通知。
Set up an HTTPS server to handle the messages. Messages will be sent
to the URL endpoint that you configure, representing that server's
location. Your server must be reachable via a DNS name and must
present a signed SSL certificate. (App Engine applications are
preconfigured with SSL certificates.)
只需在您的服务器上订阅推送通知,当您收到通知时,您就可以知道它与谁有关。您将从通知中获得的数据是它关注的用户,以及相关的 historyId,如下所示:
// This is all the data the notifications will give you.
{"emailAddress": "user@example.com", "historyId": "9876543210"}
然后你可以,例如如果相关用户在线,则通过 Socket.io 向相关用户发出事件,并让他与客户端提供的 historyId 同步。
我正在使用 node.js 创建一个应用程序,每次收到电子邮件时都会从 Gmail 获取推送消息,根据 CRM 中的第三方数据库对其进行检查,并在 CRM 中创建一个新字段,如果电子邮件包含在那里。我在使用 Google 的新云 Pub/Sub 时遇到问题,这似乎是从 Gmail 获取推送而无需持续轮询的唯一方法。
我已经阅读了此处的说明:https://cloud.google.com/pubsub/prereqs,但我不明白我桌面上的应用程序究竟应该如何工作。 pub/sub 似乎可以连接到经过验证的域,但我无法让它直接连接到我计算机上的 .js 脚本。我已将 api 密钥保存在 json 文件中并使用以下内容:
var gcloud = require('gcloud');
var pubsub;
// From Google Compute Engine:
pubsub = gcloud.pubsub({
projectId: 'my-project',
});
// Or from elsewhere:
pubsub = gcloud.pubsub({
projectId: 'my-project',
keyFilename: '/path/to/keyfile.json'
});
// Create a new topic.
pubsub.createTopic('my-new-topic', function(err, topic) {});
// Reference an existing topic.
var topic = pubsub.topic('my-existing-topic');
// Publish a message to the topic.
topic.publish('New message!', function(err) {});
// Subscribe to the topic.
topic.subscribe('new-subscription', function(err, subscription) {
// Register listeners to start pulling for messages.
function onError(err) {}
function onMessage(message) {}
subscription.on('error', onError);
subscription.on('message', onMessage);
// Remove listeners to stop pulling for messages.
subscription.removeListener('message', onMessage);
subscription.removeListener('error', onError);
});
但是,我收到错误,好像它没有连接到服务器,在 API 列表中我只看到错误,没有实际成功。我显然做错了什么,知道它可能是什么吗?
提前致谢!
TL;DR
您无法订阅来自客户端的推送通知。
Set up an HTTPS server to handle the messages. Messages will be sent to the URL endpoint that you configure, representing that server's location. Your server must be reachable via a DNS name and must present a signed SSL certificate. (App Engine applications are preconfigured with SSL certificates.)
只需在您的服务器上订阅推送通知,当您收到通知时,您就可以知道它与谁有关。您将从通知中获得的数据是它关注的用户,以及相关的 historyId,如下所示:
// This is all the data the notifications will give you.
{"emailAddress": "user@example.com", "historyId": "9876543210"}
然后你可以,例如如果相关用户在线,则通过 Socket.io 向相关用户发出事件,并让他与客户端提供的 historyId 同步。