首页 > 解决方案 > 让 C# 程序与 node.js 应用程序交互的好方法是什么?

问题描述

最近我一直在研究一个 twitch 聊天机器人,它是在 node.js 中使用 tmi.js 开发的。由于它有很多功能,我想通过使用 C# 创建一个控制面板/仪表板来简化使用。

我发现了一个关于这个主题的类似问题,但我想知道这个问题的一个好的解决方案是什么,如果有的话,对解决方案的深入解释将不胜感激。

编辑:例如,我希望能够使用控制面板连接和断开机器人。

编辑 2:到目前为止,我已经研究了套接字服务器,尽管我需要帮助来理解设置程序和 node.js 应用程序之间的连接。

标签: c#node.jssocket.io

解决方案


没有“最好”的方式。这几乎是一个意见问题,会根据经验、要求和个人喜好而有所不同。两个进程进行通信有几十种不同的好方法。对于您描述的相对简单的情况,它们中的任何一个都可以正常工作。我将提供几个想法。

首先,您是否有任何理由不直接向机器人添加 Web UI?然后,您只有一个程序。您可以将 Web 界面添加到公开控制面板界面的机器人。node.js 使添加 Web 界面变得非常容易(可能使用 Express 和您最喜欢的模板子系统)。然后Web界面可以直接访问机器人并可以直接控制它。

其次,如果你有一些令人信服的理由认为控制面板应该是一个单独的程序,它也可以使用像 electron 之类的东西在 node.js 中编写。

第三,如果您坚持使用 C# 作为控制程序,那么您只需要决定要使用哪种基于 TCP 的方案来使两个程序相互通信。对于单向通信(控制面板向机器人发送请求),您可以在机器人上公开一个简单的 http 接口,然后从 C# 控制程序向该接口发送 http 请求。一个人可以在大约 5 分钟内在你的 node.js 程序中创建一个带有一些控制方法的 http 接口。然后,您将使用 C# 提供的任何库将 http 请求发送到另一台服务器。

如果您想要/需要机器人和控制面板之间的双向通信,以便机器人可以定期向控制面板发送信息,那么您可以使用 socket.io 连接将两者连接起来,然后您将拥有一个连续的双向通信通道两者之间打开。您将在您的 node.js 应用程序中添加一个 socket.io 服务器并在您的 C# 应用程序中使用一个 socket.io 库。然后,C# 应用程序将创建与您的机器人的 socket.io 连接,然后您可以通过该连接以任何一种方式发送数据/命令。


推荐阅读