我有一个叫做bidsell的节点网络客户端,和一个名为quote的小型Python Tornado REST API。 Bidsell在触发时会定期通过http获取报价。引用作为json,随机返回随机价格信息。在当地工作 - 想在线分享,但是如何? Heroku看起来很有前途。已经尝试在heroku上的同一个项目中部署bidsell和报价,每个项目都在他们自己的heroku web dyno或部署容器中运行。从日志“heroku日志”都安装正确,但只有一个似乎正在运行。例如,我可以访问bidsell的首页网址,但是当bidsell被触发去取回报价信息时,找不到报价服务:-(我应该使用另一个部署模式吗?如何让Node web客户端在Heroku上与REST API交谈?
1
A
回答
0
由于您的项目是两个独立的技术堆栈,最简单的方法就是将这些应用程序部署为两个独立的Heroku应用程序,从而为您创建每个应用程序/服务所需的特定环境(语言,运行库,库)提供了简单方法。配置变量QUOTE_REST_API
用于指向外部Web地址的节点Web客户端。例如,使用heroku toolbelt
heroku config:set QUOTE_REST_API=https://quote-api.herokuapp.com/
在节点客户端中使用QUOTE_REST_API
配置变量将提供一种简单的方法来更改报价的地址,而无需更改代码。
如果你正在运行在一个应用程序的Heroku两个独立的项目,你需要确保你有两个
web:
项为Procfile
,开始您的单独的进程。只有标记为Web的进程才会监听网络流量。如果您使用免费的heroku层,您可能无法运行两个不同的Web进程。
1
ok,jr0cket建议我创建了2个heroku项目 - 一个用于bidsell节点项目,另一个用于报价服务。
除了bidsell节点项目源文件我已经包含以下内容的procfile:
web: npm start
和通知的package.json的Heroku如何启动一个应用程序的脚本部分:
"scripts": {
"start": "gulp serve"
}
除了quoteService源蟒文件我有一个procfile含有下列:
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];
}
从服务器被调用。JS:
'use strict';
..
var middleware = require('./proxy');
module.exports = function(options) {
function browserSyncInit(baseDir, browser) {
browser = browser === undefined ? 'default' : browser;
..
var server = {
baseDir: baseDir,
routes: routes
};
server.middleware = middleware();
browserSync.instance = browserSync.init({
port: (process.env.PORT || 5000),
startPath: '/',
server: server,
browser: browser
});
}
..
gulp.task('serve', ['watch'], function() {
browserSyncInit([options.tmp + '/serve', options.src]);
});
..
};
以允许bidsell和quoteService之间的通信。有关更多背景信息,请参阅here
正在运行的应用程序,您可以找到here。
可能需要一段时间的空闲自由层的Heroku DYNOS火起来;-)
相关问题
- 1. 如何让服务器与客户端交谈
- 2. Web客户端API和Rest API
- 3. 如何让我的objective-c客户端与我的python服务器交谈?
- 4. 如何在客户端使用rest api?
- 5. GWT客户端端rest API
- 6. 谁与API(REST)通话? Web客户端与服务器?
- 7. 如何与客户端的Node JS交互
- 8. 与Web客户端
- 9. JS客户端的REST API
- 10. C#REST API客户端
- 11. C#REST API客户端Prestashop
- 12. 创建REST客户端API
- 13. 客户端/服务器认证:React客户端与C#web api
- 14. 异步客户端JavaScript进程与服务器交谈
- 15. Windows客户端与Web客户端
- 16. 富Web客户端与瘦客户端
- 17. Spring RestTemplate与Jersey Rest客户端与RestEasy客户端
- 18. 如何让uiview与控制器交谈
- 19. 我该如何让Python与mbrola交谈?
- 20. 用java客户端与spdy服务器交谈
- 21. ASP.Net Web API 2客户端
- 22. 泽西REST客户端与Apache HTTP客户端4.5与改造
- 23. 从ANDROID-STUDIO客户端与DJANGO服务器交谈
- 24. Ksoap2客户端与基于PHP的webservice交谈的问题
- 25. Node&Redis:Redis客户端
- 26. RESTful API客户端交互
- 27. 如何让WCF与此Web服务交谈?
- 28. 网站与客户端应用程序交谈?
- 29. 与netty客户端通过spdy服务器交谈
- 30. 在客户端调用rest api c#
感谢jr0cket,请参阅下面的实现细节:-) –