Ich versuche, eine schnelle node.js/edge.js/C# Brücke für eine Demo zusammenzustellen.Kommunizieren mit C# Host von edge.js
Ich muss den ".Net calling Node.js" Stil verwenden, da der vorhandene C# -Code eine Reihe von Konfigurationswerten verwendet, die ich zu node.exe.config nicht hinzufügen kann, da ich mehrere Versionen gleichzeitig ausführen muss.
So habe ich diesen Code:
private static async Task Start() {
Func<object, Task<object>> edge = EdgeJs.Edge.Func(@"
var login = require('login.js');
var edge = require('edge')
login({ email: '[email protected]', password: 'shh' }, function callback(err, api) {
if (err) return console.error(err);
// This will keep listening until terminated
api.listen(function callback(err, message) {
if (err) return console.error(err);
// At this point I need to send the message back to this class so it can be processed..
console.log(message); // send the message to C#
// ... and then return the response via the api
api.send('response goes here');
});
});
return function (data, callback) {
callback(null, er...);
}
");
}
So wird der Code für Nachrichten in einer Ereignisschleife warten und reagieren. Dies alles funktioniert mit fest codierten Werten. Aber ich muss die Nachricht zur Verarbeitung an das C# zurücksenden, und ich kann nicht herausfinden, wie ich zwischen edge.js und der C# -App kommunizieren kann.
Es muss sicherlich über den Rückruf sein, aber ich kann nicht scheinen, herauszufinden, wie es zu strukturieren, und die Zeit wird knapp. Und ich bin keineswegs ein JavaScript-Experte.
Wie kann ich mit dem Rückruf zwischen dem Randcode und dem C# -Code innerhalb der Ereignisschleife kommunizieren?
Das war sehr hilfreich danke: leider Edge mochte nicht mehrmals aufgerufen werden (Aufruf der Edge Callback beendet die Edge-Sitzung), so musste ich darauf aufbauen. – stuartd