我想用elixir 连接到ExIrc中的两台服务器,我找不到一个简单的解决方案.我对elixir相当新,而我能看到的所有我能做的就是使用"雨伞"运行两个应用程序并让它们相互连接?(我想使用一个应用程序连接到一个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)
Run Code Online (Sandbox Code Playgroud)
我按照自述文件的建议使用ExampleHandler 。现在如果你做类似的事情:
pass = ""
nick = "my_nick"
ExIrc.Client.logon(client, pass, nick, nick, nick)
ExIrc.Client.join(client, "#elixir-lang")
Run Code Online (Sandbox Code Playgroud)
您将开始看到输出到控制台的消息#elixir-lang
- 这就是ExampleHandler
实现的方式,您可能会在其位置实现其他东西。
现在没有什么可以阻止你第二次这样做:
{:ok, client2} = ExIrc.Client.start_link
{:ok, handler2} = ExampleHandler.start_link(nil)
# and so on
Run Code Online (Sandbox Code Playgroud)
创建client2
连接到同一服务器或另一服务器的客户端。为了实现你想要的,你只需要编写一个处理程序,通过client
调用ExIrc.Client.msg(client2, ...)
发布到其他客户端来对消息做出反应。