我正在尝试制作一个连接到多个服务器的 IRC 机器人,但我无法同时读取所有套接字。
我当前的代码:
#!/usr/bin/ruby 需要“插座” 服务器 = [“irc.chat4all.org”] def 连接(服务器、端口、计数) 提出“连接到#{server} ...” @socket[count] = TCPSocket.open(服务器,端口) 说(“尼克链接集线器”,计数) 说(“用户链接集线器 0 * 链接集线器”,计数) 读取数据(计数) 结尾 def 说(味精,计数) @socket[count.to_i].puts msg.to_s 结尾 def say_channel(味精,计数) @socket[count.to_i].puts("PRIVMSG #test :"+msg.to_s) 结尾 def read_data(计数) 直到@socket[count].eof? 做 msg = @socket[count].gets 放味精 如果 msg.match(/^PING :(.*)$/) 说(“乒乓球 #{$~[1]}”,计数) 说(“加入#test”,计数) 下一个 结尾 如果 msg.match(/`test/) say_channel("正在连接 efnet...", count) 线程.new { 连接(“irc.efnet.nl”,6667,计数) } 结尾 结尾 结尾 连接 = [] 计数 = 0 @socket = [] servers.each 做 |server| 连接(服务器,6667,计数) 计数 += 1 结尾
问题是当我发送命令'`test'时,它连接到efnet,但即使我在线程中运行新连接,它也不会再读取另一个套接字。我只想同时从两个套接字读取。(变量'count'是套接字号)
谁能帮我吗?非常感激!