2016-07-13 27 views
1

Ich weiß, wie man eine HTTP-Anfrage an einen Server mit eckigen js senden. Mit dem promise zurückgekehrt, weiß ich, wie man nach einem response hört und das ui danach manipuliert. Aber dieser Ansatz kann nicht für das verwendet werden, was ich vorhabe.send http-Anfrage an Winkel js

Was ich jedoch nicht herausfinden kann, ist, wie man eine Anfrage an eine Website sendet.

Ich habe einen Server localhost:800/receiveData, die eine POST Anforderung empfängt und dann die Benutzeroberfläche und DoM auf der AngularJS Website manipuliert

app.get('/', function(req,res){ 
    res.sendFile(__dirname+'/index.html') 
}) 

app.post('/receiveData', function(req,res){ 
    var data = req.body.data 
    // assume data is a boolean 

    if(data){ 
     //show a view in index.html using angular js or anything else 
    }else { 
     //show a different view in index.html 
    } 
}); 

Jede Hilfe wird sehr geschätzt. Ich brauche ein eckiges js. Ein SPA ist zwingend erforderlich. Ich bin völlig offen für das Hinzufügen zusätzlicher Stapel, falls erforderlich.

EDIT: Wie von MarcoS hingewiesen, sollte Manipulation von dom idealerweise nicht von der Server-Seite geschehen. Ich kombiniere IPFS mit node js und angular js, um eine einzelne Seite Anwendung zu entwickeln. Der Schwarm von Knoten, die mit IPFS eingerichtet wurden, verfügt über eine offene Kommunikationslinie mit meinem Server (von Entwurf). Basierend auf Datenpaketen, die über die Kommunikationsleitung zu meinem Server gesendet werden, muss ich dem Benutzer Nachrichten über die index.html übermitteln.

+0

Sie wirklich entscheiden hätte, der den Job Sicht Templating tut - Server oder Frontend. – CozyAzure

+0

Fragen Sie, wie Sie die Ansicht auf dem Client als Antwort auf einen ** anderen ** Client, der eine HTTP-Anfrage an den Server stellt, aktualisieren? Wie möchten Sie zum Beispiel für ein Chat-System (Bob sendet eine Chat-Nachricht an den Server und dann sagt der Server Alice Browser gibt es eine neue Nachricht und es sollte die Anzeige aktualisieren)? – Quentin

+0

so etwas könnte funktionieren. Ich habe ein wenig mit 'socket.io' experimentiert. Woran denkst du? –

Antwort

2

Ich denke, Ihr Ansatz falsch ist: auf serverseitige, sollten Sie NICHT die Benutzeroberfläche und DOM manipulieren ...
Sie sollten Server Aktivität nur tun (eine Datenbank aktualisieren, E-Mail, ..., geben Sie eine statische Seite zurück.
Dann können Sie ein Ergebnis (JSON/XML/... Format) für Ihre clientseitige Aufrufskript zu lesen.

Folgende OP bearbeiten, was ich verstehe ist, er will Server Push an den Client.
Um auf die Seite zu kommen schiebt, sollten Sie Abfrage auf dem Client.
In einem Controller:

function getServerState(changeState) { 
    return $http.get("/receiveData").then(function(res) { 
    changeState(res.data); // notify the watcher 
    }).catch(function(e) { 
    /* handle errors here */ 
    }).then(function() { 
    return getServerState(changeState); // poll again when done call 
    }); 
} 

es auf diese Weise Konsumieren:

getServerState(function(status) { 
    $scope.foo = status; // changes to `foo` $scope variable will reflect instantly on the client 
}); 

Und Server-Seite:

app.post('/receiveData', function(req, res) { 
    var data = req.body.data; // assume data is a boolean 
    res.end(JSON.stringify(data); 
}); 
+0

Ich versuche, IPFS-Knoten mit 'nodejs' und' angularjs' zu kombinieren. Der IPFS-Knoten kann nur über eine offene Kommunikationsverbindung mit dem Server kommunizieren. Ich habe einen Edit mit einer besseren Erklärung hinzugefügt. Würde wirklich gerne, wenn Sie es sehen könnten. Danke –

+0

bitte überprüfen Sie jetzt. –

+0

Ich sehe. Aktualisierung meiner Antwort – MarcoS