我正在尝试制作一个连接到多个服务器的 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'是套接字号)
谁能帮我吗?非常感激!