使用 ExIrc (Elixir) 连接到多个 IRC 服务器?

Connect to multiple IRC servers with ExIrc (Elixir)?

我想用 elixir 连接到 ExIrc 中的两台服务器,但找不到简单的解决方案。我是 elixir 的新手,我能看到的就是使用 'umbrellas' 到 运行 两个应用程序并让它们相互交互? (我想用一个app连接到一个IRC服务器,如果它有一些特定的词,解析数据并发送到另一个IRC服务器)

因此,要连接单个客户端,您可以执行以下操作:

ExIrc.start!
{:ok, client} = ExIrc.Client.start_link
{:ok, handler} = ExampleHandler.start_link(nil)
ExIrc.Client.add_handler(client, handler)
ExIrc.Client.connect!(client, "chat.freenode.net", 6667)

我按照 README 的建议使用 ExampleHandler。现在,如果您执行以下操作:

pass = ""
nick = "my_nick"
ExIrc.Client.logon(client, pass, nick, nick, nick)
ExIrc.Client.join(client, "#elixir-lang")

您将开始看到来自 #elixir-lang 的消息被输出到控制台 - 这就是 ExampleHandler 的实现方式,您可能会在其位置实现其他东西。

现在没有什么能阻止你第二次这样做了:

{:ok, client2} = ExIrc.Client.start_link
{:ok, handler2} = ExampleHandler.start_link(nil)
# and so on

创建连接到同一台或另一台服务器的客户端client2。为了实现你想要的,你只需要编写一个处理程序来响应来自 client 的消息,方法是调用 ExIrc.Client.msg(client2, ...) 到 post 到另一个客户端。