0

我目前正在研究 edge.js 的可能性,因为它将极大地帮助我们完成当前的项目。我需要的是:我确实有一个 C# DLL(为 4.5.1 编译),我们在标准 C# 应用程序中使用它。这个 DLL 包含一个TcpMessageListener我通常会实例化和使用的类(例如,在 Windows 窗体中):

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”。我想我可以从那里弄清楚其他所有内容.)

4

1 回答 1

1

试试这个:我遇到了类似的问题(并且仍然有一些),但是您可能需要将 .NET 对象存储在静态对象中,因为调用后边缘会丢失上下文:http: //mcluck90.tumblr.com/post/ 89814519378/getting-started-with-edge-js

于 2015-07-01T16:17:28.013 回答