问题标签 [node-xmpp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
369 浏览

angularjs - xmpp 消息未发送给选定的朋友

我在平均堆栈应用程序中工作,现在我需要使用 XMPP 协议制作聊天模块。
我是 XMPP 的新手,我在 node js 中使用了“node-xmpp-server”和“node-xmpp-client”,在 angular js 中使用了“Strophe.js”

我的代码如下:

app.js(服务器端文件)

message_service.js(客户端文件)

为了测试,我使用静态用户在服务器端文件中向 Laxman 发送消息。

我的主要问题是该消息无法广播给我的朋友。

0 投票
0 回答
117 浏览

node.js - GCM XMPP Socket 在发送通知时始终获得 EPIPE 并断开连接

我们有一个 xmpp 连接服务器,它将套接字连接到 GCM XMPP 端点并开始发送通知。

我们注意到的一件事是在发送一个半大通知(比如说少至 1000 个设备)时,套接字会突然断开连接,并收到以下错误消息:

例如,这是直播服务器开始向不同注册IDS发送通知时的日志。

  1. info: 发送下游消息 msgId=P#c1uq...socketId=512
  2. info: 发送下游消息 msgId=P#c3tE... socketId=512
  3. info: 发送下游消息 msgId=P#c1TF...socketId=512
  4. info: 发送下游消息 msgId=P#c3sy... socketId=512
  5. info: 发送下游消息 msgId=P#c41N... socketId=512
    ...
    1. info: 发送下游消息 msgId=P#cJbr... socketId=512
    2. info: 发送下游消息 msgId=P#cJXO...socketId=512
      info: 客户端断开socket=b913-512-904dc69, code=EPIPE, errno=EPIPE, syscall=write

这种情况在我们的系统中无时无刻不在发生,使服务质量检查变得相当困难。

我们注意到的另一件事是,有时在调用 时,会返回socket.send(stanza)值,即使套接字确实已连接。这个更糟糕,因为我们必须对消息进行重新排队,并且在发送数百万条消息时它真的很耗费资源。这将在下面解释。false

附加信息:

  1. 从第 1 条消息到第 84 条消息(发生断开连接),不到 100 毫秒过去了。

  2. 我们在 3 台不同的服务器上为此 JID/PASSWORD(在 GCM 的术语中为 senderId、Api_key)打开了大约 52 个套接字。当一个大型通知发送任务出现时(比如 10000 个收件人),所有人都会不时断开连接。

  3. 套接字成功地重新连接,但它们断开了几秒钟,这降低了我们系统的效率和可靠性。

如何设置连接:

收到的每条上游消息都会发送确认。
但是我们看到的一件事是,在发送下游消息时,以下内容有时会返回 false,“即使套接字已连接”

如果发生这种情况,我们将 ack 消息排队等待稍后重试,但继续向 gcm 发送消息。

为什么socket.send有时会返回 false?(这显然不是像 EPIPE 之类的错误,它只是一个错误,意味着刷新套接字不成功,也许套接字变得不可写,即使它已连接?)。

如果确认延迟,GCM 会关闭与延迟确认的连接还是会停止向上游发送?
(AFAIK,它只会停止发送上游,所以这可能与关闭的连接(EPIPE)无关?)

如果有人能对这种行为有所了解,我将不胜感激。

谢谢 !

0 投票
1 回答
113 浏览

node.js - 麻烦的是 conversejs 3.2.1 与在 Ubuntu 16.04 上运行的 node-xmpp 一起工作

我正在尝试将 conversejs 3.2.1 配置为与在 Ubuntu 16.04 上运行的 node-xmpp-bosh 一起使用。节点版本为 4.2.6。

使用“bosh.conf.example.js”中的默认配置,node-xmpp-bosh 正确启动并监听端口 5280。这可以通过访问http://my-bosh-cm-IP:5280/http- 来确认绑定并显示以下网页:

Conversejs 似乎以某种方式连接到 node-xmpp(即 1/1),并通过它连接到目标 XMPP 服务器,尽管用于登录的帐户的联系人列表未显示在控制框中(作为旁注,当我使用 conversejs.org BOSH 连接管理器进行测试时,联系人列表正确显示在控制框中。)

但是,当向登录的帐户发送短信时,conversejs 不会显示带有短信的聊天框,并且控制台中会立即出现以下错误:

这似乎意味着消息已收到,但 conversejs 由于某些未公开的原因无法在聊天框中显示它。重复发送的消息会导致相同的错误语句,因此很明显,消息的某些部分正在发送到 conversejs,但显然不是“可消化的”和/或 conversejs 无法显示的。

我意识到 node-xmpp 是一个有点过时的项目,但希望它仍然可以提供所需的 BOSH 连接管理服务。

我意识到这个问题可能缺乏足够的细节来提供对该问题的直接答案(很高兴提供更多),但是任何关于在哪里查看或我忽略的东西的见解或指示将不胜感激。如果有人使用不同的 BOSH 连接管理器并且可以正常工作,如果您可以分享那是什么,我很想知道。

提前致谢。

0 投票
1 回答
343 浏览

javascript - 无法从运行浏览器端的脚本连接到 Openfire 服务器

起初,我使用以下脚本连接到 Openfire。

但它向我显示了一个错误“未定义要求”。所以我搜索了互联网,发现browserify可以完成我的工作。所以我使用 HTML 页面的 index.js 制作了bundle.js文件,并将其包含在 HTML 页面中。

但后来我得到了错误

未找到兼容的连接方法

有没有人可以告诉任何其他的方式来做到这一点。我也尝试了与xmpp.js 客户端包的示例目录中给出的相同,但这给了我错误,例如 XMPP 不是函数。以下是我查看示例文件后编写的代码。

index.js

示例.html

这是我尝试从浏览器端连接到 openfire 的两种方式,但它们都不适合我。拜托,谁能告诉我我做错了什么或任何其他可能的更好的方法?

0 投票
0 回答
775 浏览

node.js - 将节点应用程序连接到 Openfire

我有我的 nodejs 服务器和我的 Openfire 服务器,我想连接两者,发现 Openfire 中有一个 nodejs 插件。我已经安装它并将我的节点项目放在 /opt/openfire/nodejs 中。

我还没有找到任何关于我接下来应该遵循哪些步骤的文档。我也安装了 xmpp.js 库,但不知道如何通过它将它连接到服务器。我也不知道如何通过 openfire 访问或访问我的节点应用程序的 url。

在 Openfire 的系统设置中,我编写了以下属性,以便在 Nodejs 选项卡中出现一个条目

js.folder.server server.js

js.folder.server.path /opt/openfire/nodejs/folder

我对此真的很陌生,并且在搜索时没有找到任何帮助

0 投票
1 回答
499 浏览

typescript - Typescript 的 Xmpp 库

我正在使用 Typescript 开发的项目需要一个 javascript XMPP 库。typescript 的问题是当你想要导入外部 javascript 库时,你还需要包含外部库的类型定义。在这种情况下,正如我搜索的那样,目前没有任何 xmpp 库的类型定义,因此我无法在我的项目中使用任何 XMPP 库。

我该如何解决这个问题,或者有什么方法可以在不定义库类型的情况下将 xmpp 库添加到您的项目中。提前致谢。

0 投票
1 回答
824 浏览

xmpp - node-xmpp-server vs node-xmpp-client

我正在创建示例聊天应用程序,该应用程序需要在移动和 Web 中使用节点应用程序和使用 xmpp 协议的ejabbered服务器。使用 xmpp协议进行节点 ejabbered连接我正面临与几个模块node-xmpp- 的混淆客户端node-xmpp-server。我是新手,请任何人建议在 2 中使用哪个,如果我错了,请纠正我。

如果已经有 2 个模块 node-xmpp-client 和 node-xmpp-server,那么 node-xmpp 模块的作用是什么。

请清除我的困惑,我无法通过其他网站中的描述获得清晰的想法

谢谢

0 投票
1 回答
89 浏览

node.js - 创建多个 Jabber 客户端 Echo Bot

Hai Stackoverflowers, 我尝试了很多方法来解决我的问题,但最终导致堆栈溢出

编程语言: 打字稿

我的主要目标: 创建任意数量的客户端类,并且可以打开和关闭客户端,客户端将作为 Bot 从好友列表中回显文本

我使用 node-xmpp-client 库: https ://github.com/chris-rock/node-xmpp-client

我的代码:

问题是,机器人可以启动,但是当我调用一个新类和turnOn()和turnOff()时,它永远不会断开连接

我如何称呼我的代码://点击 URL /turnOn/:terId

也许你有我的问题的解决方案?一直在思考和阅读很多关于 xmpp 的帖子,但我无法解决这个问题,

请帮忙

真诚的,谢谢

0 投票
1 回答
465 浏览

react-native - 如何在 xmpp.js(在 react-native 中)和 MongooseIM(作为聊天服务器)中使用流管理确认?

我在 react-native 中使用 xmpp.js 作为 xmpp 聊天客户端,用于 android+ios 和 MongooseIM 作为聊天服务器。我想在应用程序中实现流管理确认。但是根据issue#540, xmpp.js 暂时不支持流管理。什么可以替代这个?

我只需要流管理模块来发送/接收 c2s 和 s2s 之间的确认。请指导。

0 投票
1 回答
709 浏览

javascript - Electron + xmpp.js:如何调试 SSL 自签名错误消息?

我正在使用 electron.js 和 xmpp.js 的组合来制作我自己的客户端。我的主要项目由这两个文件组成:

增强电子在: index.js:

并用这个文件处理它xmpp.js

我的用户界面也由以下组成index.html

使用以下渲染器:

但我的问题是,当我使用自签名证书启动我自己的本地 opefireserver 时。因此,我得到一个神秘的错误,显示如下:

显示错误

所以我的问题是:

  • 如何调试这些类型的错误?我的意思是我找不到这个错误的位置。
  • 我如何手动告诉电子或 xmpp.js 手动接受自签名证书>

我试图通过更改手动找出这个错误是在哪里产生的:

进入这个:

仍然出现奇怪的错误。