我正在构建一个用 Ruby 编写的基于 Web 的聊天应用程序。我想提供使用 XMPP 客户端连接到这个聊天服务器的能力。所以我正在寻找一个库,它可以处理一个真正的 XMPP 服务器,我可以将它与我现有的 Ruby 代码绑定(或者在两者之间使用类似 Redis 的东西)。但是,我很难找到服务器库(尽管我可以找到许多库来充当使用服务器或与服务器交互的客户端)。我一开始对 XMPP 也不是很有经验,所以我可能要求错了。你知道我可以使用的 XMPP 服务器库吗?
2 回答
XMPP 服务器库通常没有多大意义,因为 XMPP 服务器(例如 HTTP 服务器)作为单独的独立长期进程运行。您通常不会将它们嵌入到您的应用程序中。
XMPP 甚至比 HTTP 更进了一步——有一些HTTP 服务器库允许您在端口上侦听、等待请求并发送响应。XMPP 在这方面完全不同——XMPP 会话是长期存在的,需要持续关注。使用 XMPP 服务器库,您的应用程序将大部分时间都花在该库中 - 在这一点上,为什么它不如运行一个单独的进程好?
我知道这是一个诱人的想法,但是在开发了 XMPP 服务器并考虑了这一点(人们在你之前提出过要求)之后,我得出的结论是它没有什么意义(即使它在技术上是可行的)。
许多 XMPP 服务器允许自定义插件与其他系统集成,如果您需要,可以使用 Ruby 中的服务器(例如Vines)。
试试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 下很好。
在 Ruby 下还有 XMPP 服务器实现使用 XMPP4R - http://code.google.com/p/xmpp-rserve/
编辑
也许这就是你想要的。看起来像一个适合服务器使用的库 - https://github.com/sprsquish/blather
在 XMPP 官方页面上找到它 - http://xmpp.org/xmpp-software/libraries/