Strophe.js消息处理程序不会触发

问题描述

添加到连接中的Strophe onMessage处理程序似乎并不会在消息发送时触发。我似乎找不到问题。我也找不到很多其他信息,但我发现的信息似乎表明我的代码是正确的。我可以发送消息,所以我知道连接有效,但是我无法接收消息。

我这样创建连接,然后在建立新连接后调用登录功能

XMPPChatConnection() {
    if (this.#connection === undefined) {

        this.#connection = new XMPPHelper.Strophe.Connection(
            "wss://xxxxxxxxxxxxxxxxxxxxxxx",{protocol: "wss"}
        );

        this.login();
    }
  return this.#connection;
}

login函数调用chatListeners函数,该函数应设置用户登录时所需的所有侦听器:

login() {
    let jid = this.composeJabberIdentifier();
    let token = this.getXMPPToken();

    this.#connection.connect(jid,token,(status) => {
      if (status === XMPPHelper.Strophe.Status.CONNECTED) {
        this.chatListeners();
      }
   });
}

messageListener是一个导入的函数,目前仅包含控制台日志:

import messageListener from "../classes/listeners/xmpp/chat/messageListener";

chatListeners() {
    this.XMPPChatConnection().addHandler(messageListener,null,'message','chat');
}

messageListener:

export default function messageListener(message) {
    console.log(message);
}

我做错了什么?

解决方法

因此,我找到了造成问题的原因。我当时使用Xabber客户端发送回消息,但事实证明Xabber将消息发送到了错误的资源。

最重要的是,我应该以> = 0的优先级登录后设置我的状态。

this.XMPPChatConnection().send($pres().c("priority").t("0"));