Un'altra idea è che se l'app nodejs è indipendente dall'app angularjs (tuttavia utilizzano dati condivisi ed eseguono operazioni su quel modello di dati) è possibile separare i due e collegarli solo tramite firebase.
Hosting di Firebase -> index.html e file angularjs necessari.
Locally (your PC) -> server.js che si collega a Firebase e trigger sui dati modificati.
Ho fatto questo per alcuni progetti ed è un modo pratico per accedere al mondo esterno (internet) mantenendo un po 'di sicurezza non aprendo le porte alla cieca.
sono stato in grado di fare questo per controllare un Chromecast a casa mia, mentre a casa di amici
Ecco un esempio dal mio progetto più recente (sto cercando di fare un 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"});
}
});
Quando cambio la mia "comandato" dati a FB_URL, al "nuovo" (che può essere realizzato con angularjs Molto semplicemente, tramite un'operazione ng clic, per esempio) che sarà programmare una registrazione per una data e un'ora particolari (non tutte attualmente funzionanti al momento).
Hosting Firebase può solo ospitare file statici. Non eseguirà il tuo codice node.js (o qualsiasi altro). Ma se attualmente server.js sta solo servendo file statici, puoi caricarli su Firebase Hosting e funzionerà correttamente. Se il tuo server.js fa di più e stai cercando dove ospitare questo codice node.js, ci sono una moltitudine di opzioni a google search away (chiedere tali consigli è off-topic per StackOverflow, dal momento che è probabile che ci sia molte preferenze in quanto vi sono utenti SO). –
Dato che non si desidera utilizzare localhost/your_project perché "non sembra interessante", si consiglia di modificare il file hosts nel computer in modo da indirizzare qualsiasi dominio (anche google.com) sul proprio localhost. Ovviamente questo trucco funzionerà solo fino a quando visualizzi il sito web dal tuo computer. * strizza l'occhio * – gdebojyoti
È ora possibile ospitare le app dei nodi. Consulta la risposta a questa domanda "Duplica" con i dettagli più aggiornati: https://stackoverflow.com/questions/42415677/can-i-use-firebase-hosting -to-write-a-restful-api-in-node-js –