【问题标题】:What is a good way to let a C# program interact with a node.js application?让 C# 程序与 node.js 应用程序交互的好方法是什么?
【发布时间】:2019-04-24 02:29:29
【问题描述】:

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

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

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

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

【问题讨论】:

  • “最佳”是主观的。您必须非常具体,这样这个问题才不会太宽泛或/和主观。

标签: c# node.js socket.io


【解决方案1】:

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

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

其次,如果你有一些令人信服的理由认为控制面板应该是一个单独的程序,也可以使用类似 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 连接,然后您可以通过该连接发送数据/命令。

【讨论】:

  • 非常感谢您的快速回复。我个人会坚持编写 C# 程序,因为它是我的主要语言,而且我在创建 Web 界面方面绝对烂透了。如果您能详细说明在节点中创建控制方法,我将非常感谢。很抱歉,我需要这么多帮助,但这是我第一次处理此类问题,而且我对 node 很陌生。
  • @bezunyl - 我在这里添加一个关于在 node.js 中创建控制方法的教程有点超出范围。使用的工具将是用于创建 Web 服务器和定义路由的 Express 框架,然后您可能会使用查询参数来发送请求,如果查询数据或发布请求以发送数据,您可能会使用 JSON 作为返回数据的数据格式。我建议你阅读一些关于 Express 框架的教程。启动并运行您的前几个 API 方法大约需要 10 行代码。
猜你喜欢
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多