微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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"));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。