使用firebase托pipenodeJS应用程序

所以我有这个使用angularJS和nodeJS的Web应用程序。 我不想只用localhost来演示我的项目,因为当我键入“node server.js”,然后转到本地主机时,它看起来并不酷。

由于我打算使用Firebase的数据,我注意到,Firebase提供托pipe。 我试了一下,但似乎只托pipeindex.html而不是通过/使用server.js。 我已经为服务器定制了使用/更新的文件。 那么,如何在托pipe时告诉Firebase主机使用我的服务器和相关文件?

是否有可能告诉Firebase,嘿,运行“node server.js”来托pipe我的index.html?

我正在猜测你想从“ 互联网 ”看到这个网站的问题。

两条路线,你可以去这里。

a)通过Firebase托pipe服务您的索引。 Firebase只托pipe资产。 如果您的Angular应用程序正在通过Node服务,那么您将需要将您的体系结构更改为SPA-ish

SPA-ish 就像一个索引bootstrap,纯粹通过API与后端进行交互。

你可以将API服务器放在比Nodejitsu更适合的地方。

b)通过像Nodejitsu(托pipe平台)这样的东西来服务整个事物,或者由像BuyVM.net这样的托pipe公司pipe理的您自己的虚拟机。

另一个想法是,如果您的nodejs应用程序独立于angularjs应用程序(但是它们使用共享数据并对该数据模型执行操作),则可以将两者分开,并仅通过Firebase连接它们。

Firebase托pipe – > index.html和必要的angularjs文件。

本地(你的电脑) – > server.js只是连接到firebase并触发更改的数据。

我已经为一些项目做了这个工作,这是一个方便的方式来访问外部世界(互联网),同时保持一定的安全性,不盲目开放端口。

我能够做到这一点,以控制在我的房子在朋友家里的铬播放

这是我最近的一个项目(我试图制作DVR)的一个例子。

https://github.com/onaclov2000/webdvr/blob/master/app.js

var FB_URL = ''; var Firebase = require('firebase'); var os = require('os') var myRootRef = new Firebase(FB_URL); var interfaces = os.networkInterfaces(); var addresses = []; for (k in interfaces) { for (k2 in interfaces[k]) { var address = interfaces[k][k2]; if (address.family == 'IPv4' && !address.internal) { addresses.push(address.address) } } } // Push my IP to firebase // Perhaps a common "devices" location would be handy var ipRef = myRootRef.push({ "type": "local", "ip": addresses[0] }); myRootRef.on('child_changed', function(childSnapshot, prevChildName) { // code to handle child data changes. var data = childSnapshot.val(); var localref = childSnapshot.ref(); if (data["commanded"] == "new") { console.log("New Schedule Added"); var schedule = require('node-schedule'); var date = new Date(data["year"], data["month"], data["day"], data["hh"], data["mm"], 0); console.log(date); var j = schedule.scheduleJob(date, function(channel, program, length){ console.log("Recording Channel " + channel + " and program " + program + " for " + length + "ms"); }.bind(null, data["channel"], data["program"], data["length"])); localref.update({"commanded" : "waiting"}); } }); 

当我在FB_URL中改变我的“命令”数据,到“新的”(这可以通过angularjs很简单地完成,例如使用ng-click操作),它会安排一个特定date和时间的logging实际上目前function)。

我可能会迟到,但是,3年过去了,现在有一个解决scheme可以从Firebase以云function的forms提供。它不是直截了当的,但是看起来很有希望,如果一次可以重构他们的代码