Хостинг nodeJS приложение с firebase
Итак, у меня есть это веб-приложение, использующее angularJS и nodeJS. Я не хочу просто использовать localhost для демонстрации моего проекта, потому что он не выглядит круто, когда я набираю "node server.js", а затем перехожу к localhost.....
Поскольку я намерен использовать Firebase для данных, я заметил, что Firebase предоставляет хостинг. Я попробовал это, но, похоже, у меня есть только index.html, а не через /using server.js. У меня есть настроенные файлы для использования/обновления сервера. Итак, как я могу сообщить Firebase Hosting использовать мой сервер и связанные с ним файлы при хостинге?
Можно ли сообщить Firebase, эй, запустить "node server.js" для размещения моего index.html?
Ответы
Ответ 1
Я предполагаю, что вы формулируете вопрос, который хотите увидеть на этом сайте, из интернета.
Два маршрута, которые вы могли бы посетить здесь.
a) Подавайте свой индекс через хостинг Firebase. В Firebase хранятся только активы. Если ваше приложение Angular обслуживается через Node, вам нужно будет изменить свою архитектуру как более SPA-ish
SPA-ish будет похож на индексный бутстрап, который взаимодействует с бэкэнд только через API.
У вас будет сервер API на чем-то более подходящем, например, через Nodejitsu.
b) Служите все это через что-то вроде Nodejitsu (хостинговая платформа) или ваша собственная виртуальная машина, управляемая другой хостинговой компанией, такой как BuyVM.net.
Ответ 2
Другая идея: если ваше приложение nodejs не зависит от приложения angularjs (однако они используют общие данные и выполняют операции над этой моделью данных), вы можете разделить их и подключить их только через firebase.
Firebase хостинг → 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, на "новый" (что может быть выполнено с помощью угловых символов ОЧЕНЬ Просто, используя операцию ng-click, например), он будет планировать запись для определенной даты и времени (не все фактически функциональны в данный момент).
Ответ 3
Возможно, я опаздываю, но с тех пор прошло 3 года, теперь доступно решение от Firebase в виде облачных функций
Это не прямолинейно, но выглядит многообещающим, если однажды можно немного реорганизовать свой код