我目前正在研究edge.js的可能性,因为它对我们当前的项目会有很大的帮助。我需要的是:我有一个C#DLL(编译为4.5.1),用于我们的标准C#应用程序。该DLL包含一个TcpMessageListener
类,我通常会实例化并使用这样的(在Windows窗体为例):如何用DLL创建一个对象并用edge.js调用它的一个方法?
using MyAssembly.Tools;
namespace MyApplication
{
public partial class Form1 : Form
{
TcpMessageListener myListener;
public Form1()
{
myListener = new TcpMessageListener();
myListener.Port = 22222;
myListener.MessageReceived += new EventHandler<MessageEventArgs>(MessageReceived);
myListener.Start();
}
public void MessageReceived(Object sender, MessageEventArgs e)
{
[...] // My message handling code here
}
}
}
上述通常的代码创建了一个监听器当应用程序启动并开始监听在给定端口(我可以快速检查netstat或类似的)。
现在我想让同样的事情发生在我运行我的节点代码时,但我不知何故错过了这一点,并没有走上正轨。我应该补充一点,我对node.js是全新的,只是潜入其中,请耐心等待。
从我所有的edge.js现场的样品中所看到的,我想这样的:
var http = require('http');
var port = process.env.port || 1337;
var listen = require('edge').func({
assemblyFile: 'dll\\MyAssembly.dll',
typeName: 'MyAssembly.Tools.TcpMessageListener',
methodName: 'Start'
});
listen(null, true);
http.createServer(function (req, res) {
console.log(req.url);
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port);
但是这里有两个问题:第一个高于一切的代码显然似乎并不创建一个监听器的实例,但我无法弄清楚我将如何创建一个TcpMessageListener
类的实例,然后调用它的Start()
方法。
从给定的代码,你将如何创建一个监听器,并使它在背景中的一个给定的端口上监听node.js和edge.js?在深入之前,我觉得我只需要一个稳定的起点。
(最终目标是接收特定消息的后台监听器,当接收到消息时,Web用户应该显示最后收到的消息内容而不是“Hello World”,我想我可以计算出所有内容。否则从那里)