You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ejabberd获取XMPP花名册遇‘无模块处理查询’错误

问题排查:ejabberd返回"No module is handling this query"错误

1. 确认ejabberd已启用花名册模块(mod_roster)

ejabberd不会默认加载所有模块,你需要检查服务器配置文件(通常是ejabberd.yml)中的modules部分,确认是否包含mod_roster: {}。如果没有,添加这一行后重启ejabberd服务。没有这个模块,服务器自然无法处理花名册查询请求。

2. 修正请求中的from参数格式

你代码里的from值是User1@tutor,这是不完整的JID(缺少资源部分)。虽然RFC允许省略资源,但部分服务器会严格校验。可以试试两种方案:

  • 去掉from参数,让@xmpp/client自动填充当前已认证的完整JID;
  • 补充资源部分,比如写成User1@tutor/ReactApp,确保和你客户端绑定的资源一致。

3. 确保请求在正确的会话阶段发送

花名册请求必须在客户端完成认证和资源绑定之后发送。如果在会话未完全建立(比如刚连接上还没登录)就调用requestRoster,服务器会拒绝处理。你应该把请求放在online事件回调里,示例:

xmppClient.on('online', () => {
  requestRoster();
});

4. 检查ejabberd的权限配置

确认ejabberd允许当前用户访问花名册服务。检查配置文件中的access规则,确保有类似以下的设置:

access:
  roster:
    - allow: all

如果存在限制规则,调整为允许本地用户或目标用户访问。


内容的提问来源于stack exchange,提问作者Linda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:24:18