2014-09-29 60 views
1

我有一个bot分析聊天命令并提供一个小型数据库。当我告诉机器人应该将数据库的内容写入irc时,由于泛滥,它会被踢掉。我怎样才能防止这一点? (我使用freenode.net)防止irc bot被汽车踢(过度泛滥)

PS:这里是我的代码:

for (User u : users.values()) { 
    ps.println("PRIVMSG " + CHANNEL + " :" + u.toString()); 
} 

PS是其写入Socket.getOutputStream()一个PrintStream。 CHANNEL是我频道的名称。 users.size()是〜60.

回答

4

显然,客户端无法更改服务器阈值以检测泛洪和断开连接的客户端。否则,防洪的整个想法将毫无意义。

所以,你必须限制你的输出到这样的水平,它不会触发洪水踢。在ps.println调用之间添加(可配置)睡眠,并设置睡眠持续时间,以便不会被踢。


的变通办法是使用一个引擎收录式服务,并只发送URL和摘要/标题文本到IRC在一行。无论如何,使用这些服务是任何IRC粘贴长度超过3行的标准程序。各种“pastebin”服务都有REST API(example),所以这应该是相当简单的方法。

+0

也许这是唯一可能的选择,但这会极大地减慢我的代码。不过谢谢。 – kaetzacoatl 2014-09-30 16:32:35