为什么XMPP?
在研究XMPP与红隼利用激励因素是被终止虚拟机的问题不作任何清除或信号,机器将离开泳池。XMPP提供用于确定是否一个机器被连接到池的基础设施。它也提供了用于共享连接的机器(空闲,忙碌等)的状态的一种机制。
为研究IM协议的推动力来自读取僵尸网络的一个共同特点是使用IRC用于指挥和控制通信。
什么是XMPP?
XMPP代表ê 点¯x tensible 中号 essaging和P resence P rotocol,邮局,它是接受了由IETF在2004年标准(RFC 3920,RFC 3921)。
实现连接
通常情况下,TCP可用于XMPP客户端和服务器之间的基本连接,但HTTP可以用作阱(BOSH)。由于连接与客户端实体和客户端的客户端连接始发都没有用,NAT穿越是不是一个问题。
安全
XMPP指定实现必须使用TLS和SASL。
XML
该协议的工作原理是流两个XML文件发送接收XML节。XML节是一个message,presence或iq。在message与presence节有关用户的身份发送任一用户的内容或信息(空闲,忙碌等)。该iq节用于查询使用的get / set操作XMPP服务器。
该JID
的JID是对于系统中的每个客户端的标识符和类似电子邮件地址。每个JID可以由用户名,域和资源。格式为:username@domain/resource。服务器本身可以只用域来处理。因为用户可以具有对服务器在任何给定的时间打开的多个连接,该资源分量被用于区分它们。发送到一条消息username@domain将被发送到来自该用户的所有连接。然而,消息发送到username@domain/resource将只发送到特定连接。
服务器联盟
XMPP可以在服务器之间互操作类似于如何SMTP即可。发送给JID在不同域的消息将被发送到交付该域。
我们如何使用XMPP?
XMPP所提供的基础设施已经相匹配的设置,我们的机库的需求。我们可以使用的JID来标识每个机器,以及每个核心如果我们使用JID资源标识符。装卸机突然从池中的下降也已经提供给我们。
下一步骤是创建用于实际茶隼应用的架构。有两种方法可以做到这一点:茶隼实现作为XMPP客户端机器人,或者实现红隼作为XMPP服务器组件。在这两种情况下,我们将有创建的机器上使用一个客户端漫游。
客户端BOT只是一个XMPP客户端是一个程序,而不是个人用户。机器人可以发送和接收消息,对他们作出相应的反应。
服务器组件有两种形式:内部和外部。内部组件实际增加的服务器代码本身使用提供的插件API。这样的部件可以由服务器的许可的限制,尤其是当它是GPL的软件。外部组件与服务器分开的程序和使用标准协议(它通信XEP 0114),因此不依赖于任何特定的服务器实现。
在有实际的业务逻辑方面的客户端漫游和组件之间只有细微的差别。主要的区别是可扩展性 - 组件没有处理名册,这可能是资源的大量流失时,名册变大。因为我们想红隼,以便能够同时管理几千元的机器,使用组件将是实现目标。然而,我们可以用一个简单的客户端漫游开始到API和后来过渡充实到组件一旦API是更稳定。
可用的实现
有几个可用的XMPP服务器实现,几乎所有的人都在GPL下提供的。最流行 的是jabberd2和ejabberd。Jabberd2是用C语言编写,并ejabberd是写在二郎山。Ejabberd是目前最流行 的XMPP服务器实现。
有对XMPP提供(几Python库xmpppy,PyXMPP)。Xmpppy是在GPL下提供,并PyXMPP是LGPL下提供的。
此外,扭曲的Python除了与框架Wokkel提供使用MIT许可证的XMPP服务器和客户端库。
资源