如何让节点的Web客户端与Heroku上的REST API交谈?

我有一个称为bidsell的节点networking客户端,以及一个名为quote的小型Python Tornado REST API。 Bidsell在触发时会定期通过http获取报价。 引用作为json,随机返回价格信息。 在本地工作 – 想在线分享,但是如何? Heroku看起来很有希望 已经尝试在heroku上的同一个项目中同时部署bidsell和报价,每个项目都在自己的heroku web dyno或部署容器中运行。 从日志“heroku日志”都安装正确,但只有一个似乎正在运行。 因此,我可以访问Bidsell的首页url,但是,当bidsell被触发去获取报价信息报价服务没有find:-(我应该使用另一种部署模式?

由于您的项目是两个独立的技术堆栈,最简单的方法是将这些部署为两个独立的Heroku应用程序。 这使您可以简单地创build每个应用程序/服务所需的特定环境(语言,运行时,库)。

您可以为指向外部Web地址的节点Web客户端创build一个HerokuconfigurationvariablesQUOTE_REST_API 。 例如,使用heroku工具带

 heroku config:set QUOTE_REST_API=https://quote-api.herokuapp.com/ 

在节点客户端中使用QUOTE_REST_APIconfigurationvariables将提供一种简单的方法来更改报价的地址,而无需更改代码。

如果您在一个Heroku应用程序中运行两个单独的项目,则需要确保您有两个用于Procfile web:条目来启动您的单独进程。 只有标记为Web的进程才会监听networkingstream量。

如果您使用免费的heroku层,您可能无法运行两个不同的Web进程。

好的,所以jr0cketbuild议我创build了2个heroku项目 – 一个用于bidsell节点项目,另一个用于报价服务。

除了bidsell节点项目源文件之外,我还有一个包含以下内容的proc文件:

 web: npm start 

和package.json中的脚本部分,通知heroku如何启动应用程序:

  "scripts": { "start": "gulp serve" } 

除了quoteService源python文件之外,我还有一个包含以下内容的proc文件:

 web: python quoteService.py 

和一个requirements.txt文件,其中包含:

 tornado==3.1.1 pyrestful==0.4.1 

在bidsell应用中有以下proxy.js作为中间件:

 'use strict'; var proxyMiddleware = require('http-proxy-middleware'); var options = { target: 'http://quoteservce.herokuapp.com:80', changeOrigin: true }; var proxy = proxyMiddleware('/quote', options); module.exports = function(){ return [proxy]; }