Articles of edge.js

GetObject与edge.js

我目前正在通过运行edge.js的基于node.js的REST-APIreplaceIE中的ActiveX实现 到目前为止,页面实现的基本示例工作得很好。 我有我的index.js设置为 var edge = require('edge'); var edgeVb = require('edge-vb'); var path = require('path'); var helloVb = edge.func('vb', path.join(__dirname, 'simpleVbFunction.vb')); helloVb('Testing with String', (err, res) => { if(err) throw err; console.log(res); }); 和simpleVbFunction.vb一样 Async Function(Input As Object) As Task(Of Object) Return Await Task.Run(Function() Return "NodeJS Welcomes: " & Input.ToString() End Function) End Function 到现在为止还挺好。 […]

当从C#调用Edge.js时,如何钩住stdout和stderr?

背景 我正在通过Process.Start()运行Node的C#程序。 我从这个subprocess捕获stdout和stderr,并根据我自己的原因redirect它。 我正在考虑用一个调用Edge.js代替Node.exe的调用。 为了能够做到这一点,我必须能够可靠地捕获在Edge中运行的Javascript的标准输出和标准错误,并将消息传回到我的C#应用​​程序中。 方法1 我会描述这种方法的完整性,以防有人推荐它:) 如果Edge进程终止,则只需简单地声明一个msgs数组,并用新的函数覆盖process.stdout.write和process.stderr.write来处理这个问题是相当容易的,这些函数会在该数组上累积消息,最后只需返回消息数组。 例: var msgs = []; process.stdout.write = function (string) { msgs.push({ stream: 'o', message : string }); }; process.stderr.write = function (string) { msgs.push({ stream: 'e', message: string }); }; // Return to caller. var result = { messages: msgs; …other stuff… }; callback(null, result); 显然这只有在Edge代码终止的情况下才有效,在最坏的情况下,消息可能会变大。 但是,它很可能会performance良好,因为只有一个编组调用才能获取所有消息。 […]

通过.NET SDK在node.js上进行指纹识别

我试图让一个node.js应用程序与一个名为U.are.U的.NET SDK指纹识别器进行交互。 SDK提供.dll(win32和x64),Java和.NET库。 我决定使用.NET的简单使用,使所有的接口可以使用和所有。 所以,我目前面临的问题是如何调用这些.NET函数,仍然保持node.js的asynchronous性质。 应用程序stream程(在.NET示例中)非常简单,库中有3个调用,指纹完成。 private IEnumerable<Fmd> CaptureAndExtractFmd() { while (!reset) { DataResult<Fmd> resultConversion; try { if (count >= 8) { SendMessage("Enrollment was unsuccessful. Please try again."); count = 0; break; } Fid fid = null; if (!_sender.CaptureFinger(ref fid)) break; if (fid == null) continue; count++; resultConversion = FeatureExtraction.CreateFmdFromFid(fid, Constants.Formats.Fmd.ANSI); SendMessage("A finger was captured. […]

如何强制保持一个Node.js进程终止?

TL; DR 什么是强制保持Node.js进程运行的最佳方式,即保持其事件循环不会空着,从而避免进程终止? 我能想出的最佳解决scheme是: setInterval(() => {}, Number.POSITIVE_INFINITY); 有没有更好的方法来做到这一点? 问题的长版本 我有一个Node.js脚本使用Edge.js来注册一个callback函数,以便它可以从.NET中的DLL中调用。 这个function将被称为每秒1次,发送一个简单的序列号,应该打印到控制台。 Edge.js部分很好,一切正常。 我唯一的问题是,我的Node.js进程执行它的脚本,之后,它用完事件处理。 在事件循环为空的情况下,它只是终止,忽略了它应该一直运行以便能够从DLL接收callback的事实。 我的Node.js脚本: var edge = require('edge'); var foo = edge.func({ assemblyFile: 'cs.dll', typeName: 'cs.MyClass', methodName: 'Foo' }); // The callback function that will be called from C# code: function callback(sequence) { console.info('Sequence:', sequence); } // Register for a callback: foo({ callback: […]