Google Cloud Pub / Sub API - 推送电子邮件

时间:2015-07-23 22:17:22

标签: node.js google-app-engine gmail gmail-api google-cloud-pubsub

我使用node.js创建一个应用程序,每次收到电子邮件时都会从Gmail获取PUSH,将其与CRM中的第三方数据库进行核对,并在CRM中创建新字段邮件包含在那里。我在使用Google的新Cloud 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列表上我只看到错误,没有实际的成功。我明显做错了什么,知道它可能是什么?

提前谢谢!

1 个答案:

答案 0 :(得分:4)

TL; DR

您无法订阅来自客户端的推送通知。

  

设置HTTPS服务器以处理消息。消息将被发送   到您配置的URL端点,表示该服务器   地点。您的服务器必须可通过DNS名称访问,并且必须   出示签名的SSL证书。 (App Engine应用程序是   预先配置了SSL证书。)

只需在您的服务器上订阅推送通知,当您收到通知时,您可以找出它所关注的问题。您将从通知中获得的数据是它所关注的用户以及相关的historyId,如下所示:

 // This is all the data the notifications will give you.
 {"emailAddress": "user@example.com", "historyId": "9876543210"}

然后你可以,例如如果他在线,则通过Socket.io向相关用户发出一个事件,并让他与客户端提供的historyId进行同步。