是否有开源 WebSockets (JavaScript) XMPP 库?[关闭]
-
13-09-2019 - |
题
有没有人编写过使用 WebSockets 并由浏览器运行的开源 XMPP 库?
解决方案
我们还没有 XMPP 的标准 WebSockets 服务器可以实现,这在客户端得到充分处理之前是必需的。
第一步是完成WebSocket标准化。看起来这可能会在 IETF HyBi 工作组中发生,但在撰写本文时尚未得到 IESG 的批准。几周前,在广岛 IETF 会议上举行了 HyBi Birds-of-a-Feather (BoF) 会议(请参阅 会议材料),进展顺利。
在 WebSockets 有了稳定的参考并且似乎稳定下来之后, XSF 将创建一个 XEP 将 XMPP 绑定到 WebSocket,大概每个 WebSocket 帧都有一个节。
编辑:Jack Moffitt 编写了一份 IETF 互联网草案 第一次通过可以使用的协议。 警告. 。这种情况仍有可能发生巨大改变。仅当您愿意稍后将其完全删除时才实施它。 警告.
其他提示
有多种解决方案(没有一个是完美的)
1.使用卡津。
他们已经支持了。它是开源的,但他们有某种 双重许可, ,所以最好检查一下是否可以用于您的项目。
2.结合js.io和APE(Ajax推送引擎)
APE 是一个 Comet 框架,但他们最近开始支持 Websockets。在他们的网站(“APE 作为代理”部分),他们说它可以运行包含 xmpp.js 的 js.io 库,因此将它们组合起来可能会起作用。
3.使用考乔
它是一个类似于 APE 的基于 java 的框架,提供一站式 Comet 解决方案,并且它们似乎都支持 XMPP 和 WebSockets
4.请求 Strope 团队支持 WebSocket。
Strope 通过 BOSH(通过同步 HTTP 的双向流)执行 XMPP,但是有 关于支持 WebSockets 的讨论, , 也。
Jack Moffitt(核心开发人员和上述书籍的作者)似乎对 WebSocket 感兴趣,但我们需要提供更强有力的推理来说明为什么他们需要支持 WebSocket 而不是 BOSH。如果您有好的答案,欢迎加入。
我刚刚尝试过他们的 xmpp、bosh、strope echobot 示例, ,效果很好。您可能还想尝试一下,看看它是否符合您的要求。
对于#2 和#3,他们说它们都支持 xmpp 和 websockets,但不确定它们是否可以一起工作。
您正在考虑将 XMPP 和 WebSockets 用于哪种类型的应用程序?
以下是替代方案的建议。
- 如果您想要存在、聊天、聊天室等价功能,您可以制作 Wave Gadget 或 Robot,然后使用 Wave嵌入API(死链接,出于历史目的而保留)。Wave 实际上是构建在 XMPP 之上的。
- 如果您只是寻找非常低延迟的消息传递功能,您可以 尝试 AMQP.
- 如果您正在寻找更简单的消息流,您可以 正如我在此处演示的那样,通过管道输入/输出 unix 文件.
我在写这篇文章时得到了上面的大部分信息 这篇博文. 。如果您不时查看评论部分,一旦找到其他解决方案,我将发布更新。
有一本书即将覆盖这个话题......
专业XMPP用JavaScript和jQuery 替代文本http://ecx.images-amazon.com/images/ I / 51B7VAHw8OL._SL500_AA240_.jpg
但我假设你不想等待的书。所以,看从JSConf 中的杰克·莫菲特的介绍。我今天早上看了。 (杰克·莫菲特是连接于上述书的作者。)
所涉及的库(JavaScript和C实现)是的strophe 。
这是勘探了卓有成效的面积,但很生。我们很快便会看到。的WebSockets配备HTML5,是吗?
JSJaC 实施 基于 Websocket 的 XMPP. 。众所周知,它可以与多种后端实现一起使用:
- 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-网络支持上没有已知的工作
- Mongooseim- ejabberd的叉子,支持XMPP在Websockets上。
我不是在浏览器端肯定JS可以处理WebSocket协议孤单,因为它主要依赖于浏览器的API。很少有浏览器支持WebSocket的尚未:铬,Safari5,也许Firefox4。有基于Flash / AS3许多变通方法(那么你的js闪码通信)的主要限制是,Flash不支持安全连接(坏)。
BWT,您可以检查这个WebSocket的implem 他们提供开源的Java的WebSocket客户端lib和似乎处理XMPP的东西,如果你浏览版本库,你可能会发现基本AS3的WebSocket实现。