寻找一个用Ruby编写的XMPP服务器库

3
我正在构建一个基于Ruby编写的Web即时聊天应用程序。我想提供通过XMPP客户端连接到此聊天服务器的能力。因此,我正在寻找一个可以处理成为真正的XMPP服务器并与我现有的Ruby代码(或使用诸如Redis之类的东西)结合使用的库。然而,我很难找到服务器库(尽管我可以找到许多用作客户端的库,其消耗或与服务器进行交互)。另外,我对XMPP不是很熟悉,所以可能请求错误。你知道我可以使用的XMPP服务器库吗?
2个回答

5
XMPP服务器库通常没有太多意义,因为XMPP服务器(例如HTTP服务器)作为单独的长期运行的进程运行。您通常不会将它们嵌入到应用程序中。
甚至比HTTP更进一步,有HTTP服务器库可以让您监听端口,等待请求并发送响应。在这方面,XMPP完全不同-XMPP会话是长期存在的,并且需要不断关注。使用XMPP服务器库,您的应用程序将在该库内大部分时间内运行-此时,为什么它不能像运行单独的进程一样好呢?
我知道这是一个诱人的想法,但是开发了一个XMPP服务器并思考了这个问题之后(在您之前有人提出过),我得出结论几乎没有意义(即使技术上是可能的)。
许多XMPP服务器允许自定义插件以与其他系统集成,并且如果这是您的要求,则有Ruby服务器(例如Vines)。

我觉得你解释得比我更流畅。我想要运行一个独立的XMPP服务器(而不是将其嵌入我的应用程序中),并且通过对XMPP服务器进行自定义/扩展来实现在两者之间传递消息。Vines看起来很接近我想做的事情,所以我会去了解一下。 - Andrew

4

请尝试使用XMPP4R

例如 - 连接和认证:

require "xmpp4r"

robot = Jabber::Client::new(Jabber::JID::new("sample@xmpp.ru"))
robot.connect
robot.auth("password")

并发送消息:

message = Jabber::Message::new("recipient@xmpp.ru", "Hi there!")
message.set_type(:chat)

robot.send message

但是这个库在Windows下有些不稳定,在Linux下非常好用。
还有一种使用XMPP4R的Ruby XMPP服务器实现 - http://code.google.com/p/xmpp-rserve/ 编辑 也许这就是你想要的。看起来适合服务器使用的库 - https://github.com/sprsquish/blather 在XMPP官方页面上找到它 - http://xmpp.org/xmpp-software/libraries/

抱歉如果我表达不清楚。我不是试图作为机器人连接到现有的服务器,而是试图成为服务器。但也许我误解了你的回答。你能详细说明一下吗? - Andrew
好的,我只使用XMPP4R作为客户端。但是我怀疑它不仅适用于客户端。通常会说明库仅限于客户端还是不止于此。此外,最后一个链接指向使用XMPP4R实现Ruby xmpp服务器的项目。但似乎该项目处于非常早期阶段。现在存储库中没有有用的内容。你可以尝试通过邮件与作者联系。 - JohnGray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接