javascript - 如何从 DLL 创建对象并使用 edge.js 调用其方法之一?

标签 javascript .net node.js dll edge.js

我目前正在研究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 代码时发生同样的事情,但我不知何故错过了要点并且没有走上正轨。我应该补充一点,我对 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”。我想我可以弄清楚其他所有内容从那时起。)

最佳答案

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

关于javascript - 如何从 DLL 创建对象并使用 edge.js 调用其方法之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30596827/

相关文章:

c# - 如何结束对话?

.net - 如何捕获 .net 程序集中所有未处理的异常(库类型,而不是应用程序)

node.js - 如何在Nestjs中实现多种 Passport JWT身份验证策略

javascript - express.js 异步路由器和错误处理

javascript - .slideToggle();适用于所有其他 div 吗?

javascript - 使用javascript使父节点消失

.net - 如何从字节中读取前 4 位和后 4 位?

javascript - iframe 附加到制作副本

javascript - 无法读取未定义的属性 'username' - 在 Node.js 中通过电子邮件发送表单数据

mysql - Sequelize 复合唯一约束