处理IRC聊天漫游器应用程序的全局禁止

我有一个IRC聊天机器人,我使用Node.js + JavaScript为TwitchTV上的广播公司开发。 我从家里的电脑上运行这个程序,我知道IRC将在全球范围内禁止发送太多消息或泛滥的IP地址。

我想把聊天机器人开放给其他广播公司,但是我担心,如果不同的机器人(我已经设置了这样的广播机构可以为他们的机器人创build一个新的帐户,所以这个名字是为他们的频道量身定制的)正在从一个单一的全球IP发送消息。

什么是我可以使用的一些技术,每个广播公司都可以从机器人那里得到他们的信息而不会被全球禁止?

下面是一个可以同时在多个通道中发送消息而不被禁止的bot的例子:

http://www.twitch.tv/moobot

我问过那个创造者,他们是否可以给我一些小窍门,但他们几乎说不。

有一些限制,你应该知道,你可以/不应该超过:

  • 克隆每个IP /子网
    大多数networking限制来自单个IP的并发连接数量(有时,尤其是IPv6甚至整个子网)。 每个networking的这个限制是不同的,当这个限制超过时,它的处理方式也是如此。 一些networking创build一个g线(全球networking禁止你的IP),其他networking只是删除任何新的连接。

  • 每个连接的通道限制
    您可以同时在多less个频道上进行限制。 此限制是每个连接,因此添加其他连接会将您需要克隆的最大通道数相乘。

  • 每个连接的速率限制每个连接只允许在给定时间内将一定数量的数据发送到服务器。 这可以从5个命令/秒变为复杂,其中不同的命令将不同的量添加到阈值。


那么你怎么能绕过这个限制呢?

  • 克隆
    最好的办法是得到一个例外,一个信任。 如何获得一个取决于networking(策略)。

  • 渠道限制
    networking中的一些服务器可能允许更多的信道进入。某些networking可以允许某些用户获得更高的限制。 再次询问您的IRCop或使用克隆。

  • 费率限制
    询问您的IRCop或使用克隆。 实施一个队列,以避免被Excess Flood断开。

总结:

您不应该使用每个通道的单个连接。 虽然这给你的好处是为每个频道select不同的名称,但这被认为是大多数networking资源的浪费。
最好使用中性名称,并将其用于多个渠道。 一旦你达到通道上限,使用克隆。

为了避免被踢出excess flood实行排队回线 (限速在你身边)。

切勿连接超过允许的并发连接数量的networking。
这包括“鬼”,最近被丢弃,但仍然“在服务器上”的连接。 (为了防止g线在重新连接之前将极限值除以2或等待3分钟(或更多)

编辑

在抽搐的环顾四周看起来像抽搐不使用IRCnetworking,而是使用几个IRC服务器。 这使得它更简单和更复杂:

  • 如果可能,您应该查找相应的DNS名称并使用现有的连接(使用相同的IP)。
  • 使用一个用户名。