c# - 让 C# 程序与 node.js 应用程序交互的好方法是什么?
问题描述
最近我一直在研究一个 twitch 聊天机器人,它是在 node.js 中使用 tmi.js 开发的。由于它有很多功能,我想通过使用 C# 创建一个控制面板/仪表板来简化使用。
我发现了一个关于这个主题的类似问题,但我想知道这个问题的一个好的解决方案是什么,如果有的话,对解决方案的深入解释将不胜感激。
编辑:例如,我希望能够使用控制面板连接和断开机器人。
编辑 2:到目前为止,我已经研究了套接字服务器,尽管我需要帮助来理解设置程序和 node.js 应用程序之间的连接。
解决方案
没有“最好”的方式。这几乎是一个意见问题,会根据经验、要求和个人喜好而有所不同。两个进程进行通信有几十种不同的好方法。对于您描述的相对简单的情况,它们中的任何一个都可以正常工作。我将提供几个想法。
首先,您是否有任何理由不直接向机器人添加 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 连接,然后您可以通过该连接以任何一种方式发送数据/命令。
推荐阅读
- jquery - 从另一个函数获取返回对象
- laravel - laravel 升级到 5.2
- kotlin - Lambda 可以更改引用,但 fun 在 Kotlin 中不能
- linux - 如何重定向二进制文件的打开调用
- python - 如何在 python3 中将 dd-mm-yyyy 转换为 ISODate 格式
- maven - 运行测试运行程序时输出为 0 Scenarios
- php - Cakephp 2 插件路由在表单操作中不起作用
- c# - Linq:是否有替代方法来过滤字典内列表内的属性?
- angular - Angular 7 在 localhost IIS Express 中配置 x-frame-options
- c# - 如何使用资源文件 C# 以马拉地语打印报告