Я пытаюсь собрать быстрый узел node.js/edge.js/C# для демонстрации.Общайтесь с хостом C# из edge.js
Мне нужно использовать стиль ".Net calling Node.js", поскольку существующий код C# использует несколько значений конфигурации, которые я не могу добавить в node.exe.config, поскольку мне нужно будет запускать несколько версий одновременно.
Так что у меня этот код:
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...);
}
");
}
Таким образом, код ждет сообщений в цикле обработки событий и отвечает. Все это работает с жестко заданными значениями. Но мне нужно отправить сообщение обратно на C# для обработки, и я не могу разобраться, как взаимодействовать между edge.js и C#.
Это должно быть обязательно через обратный вызов, но я не могу начать выяснять, как его структурировать, и время становится коротким. И я отнюдь не эксперт по JavaScript.
Как я могу связываться между краевым кодом и кодом C# в цикле событий с помощью обратного вызова?
Это было очень полезно, спасибо: к сожалению, краю не понравилось, что его вызывали несколько раз (вызов обратного вызова края завершает сеанс edge), поэтому мне пришлось его строить. – stuartd