问题标签 [sleekxmpp]

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 投票
1 回答
456 浏览

python - Ejabberd - 通过 Bot 发送和接收消息

我编写了一个机器人B,它接收来自客户端的消息C1并将其转发给客户端C2,即 2 人可以通过网关连接Bot

我正在使用Sleekxmpp,一个用于上述目的的 python 客户端 XMPP 库。

现在客户端C2收到BOT消息的问题。它应该从客户端 C1 接收它。为此,我需要 C1 的密码来授权 C1,我在消息正文中没有它,在正文中发送密码也不安全。

创建网关 BOT 的最佳方法是什么?

0 投票
1 回答
521 浏览

python - SleekXMPP-How to check whether the user is authenticated or not?

As the question says, how can I do it? following is the code-

I can see that printing in the logs, but I rather want to check it in the code as well. How can I do it?

0 投票
1 回答
699 浏览

xmpp - XMPP - 名册订阅说明

考虑我的 Jabber 服务器上有 2 个用户 Alice 和 Bob。要将订阅添加到名册中both,我需要执行以下步骤:

  1. Alice 向 Bob 发送订阅请求。

  2. 当 Bob 收到请求时,他会批准它。

  3. Bob 也可能对 Alice 的存在感兴趣,所以他订阅了她。

  4. Alice 需要批准 Bob 的请求。

现在考虑,Bob 不在服务器上,即他未注册,Alice 试图将他添加到她的名册中。

以下是将要执行的步骤:

  1. Alice 向 Bob 发送订阅请求。

  2. Bob,未注册,没有收到请求。

  3. Alice->Bob 订阅设置为None.

  4. 流程到此结束。

现在,鲍勃自己注册了。爱丽丝如何知道鲍勃自己注册了并且她需要subscription再次发送请求或者鲍勃如何将通知推送给将他添加到他/她的名册中的每个用户?哪个XEP/Ejabberd 模块可以处理这个问题?

我们调试了 Whatsapp 并了解到,在这种情况下,Bob 会向所有将他添加到他们的名单中的用户推送通知。

0 投票
0 回答
312 浏览

python - SleekXMPP 和 Flask Socketio 挂线

我正在尝试创建可以从浏览器控制的 XMPP 客户端。我将 SleekXMPP 用于 XMPP 客户端,将 flask-socketio 用于网站,因此我可以将信息从 XMPP 服务器中继到我的 XMPP 客户端到我的网站前端。如果我使用纯烧瓶,我需要轮询我的服务器以获取其他更新,我宁愿让服务器推送到我的客户端。

我在线程方面遇到了一些问题。连接到服务器工作正常。但是当我断开连接时,我收到一个错误,显示无法杀死 3 个线程。如何在断开连接时杀死这些线程?或者为什么他们没有被杀死?还是我应该使用更好的设置?

谢谢!!

错误:

这是我的python脚本。

对于我的前端

0 投票
1 回答
898 浏览

python - 使用 SleekXMPP 在消息节中发送带有自定义元素的 XMPP 消息

我正在开发一个XMPP 机器人,它将向发件人发送/回复一条消息,其中包含以下附加元素

我尝试使用 SleekXMPP ObjectIqMessage无法达到目标。此外,我还尝试使用send_message方法。

我不确定我的谷歌搜索关键字是否不正确,但我找不到与此相关的任何文档或指南。但是,我确实找到了可能对插件创建相关的指南有所帮助。如果有人可以帮助我,将不胜感激。

谢谢

0 投票
1 回答
34 浏览

python - 订阅新收件人:update_roster() 似乎挂起

我有一个小的 python 脚本可以将 xmpp-messages 发送给给定的收件人。如果收件人有现有的订阅,这很好用 - 否则消息将不会被传递。

由于系统定期有新用户,我想到了使用update_roster(recipient,block=False,subscription="both"). 但不幸的是,脚本似乎挂在那里。

为什么?

请参阅下面的代码...

0 投票
1 回答
1284 浏览

python - SleekXMPP:“证书已过期。”

我目前正在尝试使用 Python3.5 中的 slimxmpp 模块连接到 XMPP 服务 jabber.at。Jabber.at 的 SSL 证书由 Let's Encrypt 颁发。

我遇到的问题是,当我尝试使用 slimxmpp 登录到我的 jabber.at 帐户时,我收到以下错误:

我已尝试在 Ubuntu 16.04、Manjaro GNOME 17 和 Windows 10 上解决此问题,并在每台机器上全新安装 Python、sslixxmpp 和所有 slimxmpp 依赖项。这并没有什么不同。

在我的每台机器上,我都安装了Let's Encrypt Authority X3 证书,但 slimxmpp 仍然认为证书已过期,即使证书有效期至 2022 年。令人沮丧的是,我能够使用 Pidgin 登录到我的 XMPP 帐户,而且 Pidgin 自动保存的证书(在 Linux 中可以在 ~/.purple/ 下找到)与我直接从 Let's Encrypt 下载的证书完全相同。

我已经尝试手动将 ssl 版本更改sleekxmpp.xmlstream.xmlstream.py:125ssl.PROTOCOL_SSLv23,但这也不起作用。我也尝试过手动指定 Let's Encrypt .crt 文件的路径sleekxmpp.xmlstream.xmlstream.py:140,但我仍然遇到同样的问题。

我应该注意,我确实在每台机器上都安装了dnspythonpyasn1和。pyasn1_modules虽然我可以通过卸载成功登录到我的 jabber.at 帐户,或者通过设置为pyasn1明确忽略证书,但这不是我的解决方案 - 我必须加密我的连接。sleekxmpp.xmlstream.xmlstream.py:140None

有什么我可以做的吗?我已经在这几天了,我还没有在谷歌上找到任何有用的解决方案。

我很感激任何帮助!

0 投票
0 回答
160 浏览

nginx - 带有 uwsgi、flask 和 slimxmpp 的 Nginx 服务器

我正在尝试通过将 nginx 服务器与 uwsgi、flask 和 slimxmpp 一起使用来处理一些消息。这是代码。

我使用这些选项通过 uwsgi 运行代码。

当我通过键入命令运行 uwsgi 时,例如“/usr/sbin/uwsgi --ini uwsgi.ini”,它运行良好。我可以发送和接收消息。但是,当我在 CentOS 7 的服务上运行它时,recieve 工作正常,但 send 不工作。我需要更多选择还是缺少一些东西?

0 投票
1 回答
485 浏览

python - Python 3 中的 XMPP 线程接收器

我想要做的是使用 Slixmpp 库设置一个 XMPP 接收器,该库在整个脚本执行过程中侦听消息。我认为线程库可能会提供一个解决方案,所以尝试过。这个脚本是一个在线PvP游戏,我需要不断地接收来自对手的信息。

这是我尝试过的代码:

这将返回以下错误:

0 投票
0 回答
31 浏览

python - 套接字尝试连接异常

我正在使用slimxmpp将 python 响应发送到即时信使。我有一个活动服务器和一个备份服务器。

目前我正在连接到文档中描述的活动服务器。

最近我收到了一个[WinError 10061] ConnectionRefusedError. 我不想手动将服务器更改为备份服务器,所以我尝试实现一个try-except块。

这是我到目前为止得到的

执行脚本后,我收到带有打印的错误消息。到目前为止,一切都很好。但是现在如果与主服务器的第一个连接失败,我想实现第二个连接。

我对 python 中的异常和套接字很陌生,我不知道如何实现这一点。我尝试了下面的块,但脚本自动中止了 try 块的打印。

你能提供一些帮助吗?

编辑: 我现在有一个可行的解决方案,但这似乎是非常糟糕的编码。

首先xmpp.process是必要的。其次s.connect(),我认为只是连接到套接字,但xmpp.connect()需要将 python 脚本连接到 IM 服务器。换句话说:我检查我是否可以连接到ctive_server:myport一般,如果可以,我通过xmpp.connect(). 但一定有比我更好的解决方案