【问题标题】:Is there an open source WebSockets (JavaScript) XMPP library? [closed]是否有开源 WebSockets (JavaScript) XMPP 库? [关闭]
【发布时间】:2010-12-23 10:30:34
【问题描述】:

有没有人编写过使用 WebSockets 并打算由浏览器运行的开源 XMPP 库?

【问题讨论】:

标签: javascript xmpp


【解决方案1】:

即将出版一本涵盖该主题的书...

Professional XMPP with JavaScript and jQuery alt text http://ecx.images-amazon.com/images/I/51B7VAHw8OL._SL500_AA240_.jpg

但我假设您不想等待这本书。所以看the Jack Moffitt's presentation from JSConf。我今天早上看了。 (杰克莫菲特是上面链接的书的作者。)

涉及的库(JavaScript 和 C 实现)是Strophe

这是一个非常富有成果的探索领域,但非常原始。我们很快就会看到更多。 WebSockets 是 HTML5 自带的,对吗?

【讨论】:

  • 确实,WebSockets 是 HTML5 的一部分;谷歌浏览器已经实现了
【解决方案2】:

我们还没有一个服务器可以实施的 XMPP over WebSockets 标准,在充分处理客户端之前需要这个标准。

第一步是完成WebSocket标准化。看起来这可能发生在 IETF HyBi 工作组中,在撰写本文时该工作组尚未获得 IESG 的批准。几周前在广岛 IETF 会议上举办了 HyBi Birds-of-a-Feather (BoF)(见 meeting materials),进展顺利。

在 WebSockets 有一个稳定的引用并且似乎正在稳定下来之后,XSF 将创建一个将 XMPP 绑定到 WebSockets 的XEP,大概每个 WebSocket 帧都有一个节。

编辑:Jack Moffitt 编写了一个 IETF Internet-Draft,第一次通过了可以使用的协议。 警告。这种情况仍有可能发生巨大变化。仅当您愿意稍后将其完全删除时才实施它。 警告

【讨论】:

【解决方案3】:

有多种解决方案(没有一个是完美的)

1。使用 Kaazing。

他们已经支持它。它是开源的,但他们有某种dual license,所以最好检查一下你是否可以用于你的项目。

2。结合js.io和APE(Ajax Push Engine)

APE 是 Comet 框架,但他们最近开始支持 Websockets。 在他们的网站上(“APE 作为代理”部分),他们说它可以运行包含 xmpp.js 的 js.io 库,因此将它们组合起来可能会起作用。

3。使用考乔

它是一个类似于 APE 的基于 java 的框架,提供一站式 Comet 解决方案,它们似乎同时支持 XMPP 和 WebSockets

4。请求 Strophe 团队支持 WebSocket。

Strophe 通过 BOSH 执行 XMPP(同步 HTTP 上的双向流),但也有 a discussion about supporting WebSockets

Jack Moffitt(核心开发者和上述书籍的作者)似乎对 WebSockets 很感兴趣,但我们需要提供更强有力的理由来说明他们为什么需要在 BOSH 上支持 WebSocket。如果你有好的答案,请加入我们的行列。

我刚刚尝试了他们的xmpp,bosh,strophe echobot example,效果很好。您可能还想尝试一下,看看它是否符合您的要求。

对于#2 和#3,他们说它们都支持 xmpp 和 websockets,但不确定它们是否可以一起使用。

您正在考虑将 XMPP 和 WebSockets 用于哪种应用程序?

以下是替代方案的建议。

  • 如果您想要在场、聊天、聊天室等功能,您可以制作 Wave Gadget 或 Robot,然后使用 Wave Embed API(死链接,保留用于历史目的)暴露给外部。 Wave 实际上是基于 XMPP 构建的。
  • 如果您只是在寻找极低延迟的消息传递功能,您可以try AMQP
  • 如果您正在寻找更简单的消息流,您可以pipe in/out unix file as I demonstrated here

我在写this blog post 时得到了上面的大部分信息。 如果您不时查看评论部分,我会在找到其他解决方案后发布更新。

【讨论】:

  • > 您正在考虑将 XMPP 和 WebSockets 用于什么样的应用程序?我不一定有任何具体的想法。一般来说,当然,基于 WebSockets 的 XMPP 将为真正的基于事件的 Web 应用程序提供框架和协议,从而极大地改善用户体验,例如: * 基于 Web 的电子邮件 * 基于 Web 的协作 * 实时数据同步 * 实时更新 * 浏览器到浏览器的通信 这两种技术的结合,以及强大的客户端 JavaScript 引擎,似乎为现代网络应用开辟了许多可能性。
  • Strophe 现在支持 websockets。我可以选择使用 websocket 或 BOSH 进行连接。
【解决方案4】:

我不确定您为什么要专门要求 WebSocket 解决方案,因为 XMPP 服务器必须首先支持这一点。

但是有几个 XMPP JavaScript 库可用(据我所知,它们都使用 BOSH 方法):

这些示例取自XMPP Website,其中列出了 XMPP 协议的开源实现。

【讨论】:

  • 链接通常不能作为答案。用您自己的话制定特定于问题的答案,并使用链接作为参考。编辑后提及我,这样我就可以删除我的反对票。
  • @markus:感谢您的评论。我确定了答案。
  • 问题是专门询问支持 WebSockets 而不是 BOSH 的 JavaScript XMPP 库。
  • @MattZukowski 那么请继续对所有提到 BOSH 的答案投反对票。然而,这仍然是一个有效的答案,因为在撰写本文时没有 JS 唯一的解决方案可用。在这种情况下,最好提及替代方案,因为问题没有明确地说“请不要使用 BOSH 解决方案”。
【解决方案5】:

我不确定浏览器端的 JS 是否可以单独处理 websocket 协议,因为它主要依赖于浏览器 API。很少有浏览器支持 websocket:Chrome、Safari5,也许是 Firefox4。基于 flash/as3 的解决方法有很多(然后你的 js 与 flash 代码通信),主要限制是 flash 不支持安全连接(太糟糕了)。

BWT,您可以查看this websocket implem,他们提供了开源 Java websocket 客户端库,并且似乎处理 xmpp 的东西,如果您浏览存储库,您可能会发现基本的 as3 websocket 实现。

【讨论】:

    【解决方案6】:

    JSJaC 实现XMPP Over Websockets。众所周知,它可以与多个后端实现一起使用:

    • 节点-xmpp-bosh- 支持 RFC6455 并且从 0.6.1 开始没有问题,它也 必要时透明地使用 STARTTLS
    • wxg - 支持 RFC6455 并且可以工作 没有问题,但无法连接到需要的服务器 STARTTLS(原始 wxg 有一些 由 Gordin 修复的问题)。
    • ejabberd-websockets - 没有 支持 RFC6455 因此它不起作用,调整它以支持 对于任何了解 Erlang 的人来说,RFC6455 应该很容易(一些工作 可以在 github 上找到正在进行中)
    • 开火 - 非官方插件可用,但缺乏支持 对于 RFC6455,因此它不起作用
    • Apache Vysper - 可以 不支持 RFC6455 因此不起作用
    • Tigase - WebSocket 上没有已知的工作 支持
    • MongooseIM - ejabberd 的一个分支 通过 Websocket 支持 XMPP。

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 2011-11-29
      • 1970-01-01
      • 2011-05-11
      • 2011-06-10
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多