使用带有EM和IRC的WebSockets发送“连接成功”消息

时间:2013-08-17 22:56:50

标签: ruby websocket eventmachine

我正在尝试使用WebSockets编写IRC客户端。我在GitHub上找到的IRC客户端使用EventMachine,但我也尝试使用WebSockets在连接时通知任何连接的客户端。但是,我不认为我完全理解EventMachine,因为虽然客户端成功连接并加入了IRC通道,但puts 'Connected...'和后续行都会被执行。

我认为这是因为我代表对EventMachine的基本误解。

EM.run {

  EventMachine::WebSocket.start(:host => '0.0.0.0', :port => 8080) do |websocket|

    websocket.onopen {

      irc = Net::YAIL.new(
          :address    => 'irc.my-example-server.net',
          :port       => 6667,
          :username   => 'MyExample',
          :realname   => 'My Example Bot',
          :nicknames  => ['MyExample1', 'MyExample2', 'MyExample3']
      )

      irc.on_welcome proc { |event|
        irc.join('#ExampleChannel')
        EM.next_tick {
          puts 'Connected...'
          websocket.send({ :message => 'Connected' })
        }
      }

      irc.start_listening!
    }

  end

}

1 个答案:

答案 0 :(得分:0)

经过一夜的研究,我想我已回答了自己的问题。基本上它与我对EventMachine的误解毫无关系。它只是我试图使用的IRC客户端只是一个无限循环,因此没有其他任何东西可以打断它。在为EventMachine兼容的IRC客户端研究了几个小时之后,我遇到了Ponder:https://github.com/tbuehlmann/ponder所以现在希望我可以继续创建我的应用程序了!

无耻的插件:https://github.com/Wildhoney/Banter.js