是否有开源WebSockets(JavaScript)XMPP库?

时间:2009-12-04 22:47:29

标签: javascript xmpp

是否有人编写过使用WebSockets的开源XMPP库,并且是否应由浏览器运行?

6 个答案:

答案 0 :(得分:24)

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

1。使用Kaazing。

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

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

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

3。使用Caucho

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

4。请Strophe团队支持WebSocket。

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

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

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

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

您正在考虑使用XMPP& amp; WebSockets用于?

以下是替代方案的建议。

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

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

答案 1 :(得分:18)

我们还没有服务器可以实现的WebSockets的XMPP标准,这在客户端可以得到充分解决之前是必需的。

第一步是完成WebSocket标准化。看起来这可能发生在IETF HyBi工作组中,在撰写本文时尚未得到IESG的批准。几周前在广岛IETF会议上有一个HyBi鸟类羽毛(BoF)(参见meeting materials),这很顺利。

在WebSockets有一个稳定的引用并且似乎已经解决之后,XSF将创建一个{X}绑定XMPP到WebSockets的XEP,可能每个WebSocket框架都有一个节。

编辑:Jack Moffitt写了一个IETF Internet-Draft,第一次通过了一个可以使用的协议。 警告即可。这仍然可能会发生巨大变化。如果您愿意稍后将其全部删除,请仅实施它。 警告

答案 2 :(得分:3)

很快就会出现一本涵盖这个主题的书......

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,是吗?

答案 3 :(得分:3)

JSJaC实施XMPP Over Websockets。众所周知,它可以使用多种后端实现:

  • node-xmpp-bosh - 支持RFC6455并且自0.6.1以来没有问题,它也是 必要时透明地使用STARTTLS
  • wxg - 支持RFC6455并且有效 没有问题,但无法连接到需要的服务器 STARTTLS(原始wxg有一些 问题,由Gordin确定。
  • ejabberd-websockets - 没有 支持RFC6455因此它不起作用,使其适应支持 任何知道Erlang的人都应该很容易理解RFC6455(有些工作 正在进行中可以在github上找到)
  • Openfire - 非官方插件可用,但它缺乏支持 对于RFC6455因此它不起作用
  • Apache Vysper - 确实如此 不支持RFC6455因此不起作用
  • Tigase - 在WebSocket上没有已知的工作 支撑
  • MongooseIM - ejabberd的一个分支 支持Web服务器上的XMPP。

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)