javascriptxmppejabberdstrophe

Strophe.js on-message handler doesn't trigger


The Strophe onMessage handler that I added to the connection doesn't seem to trigger whenever a message gets send. I can't seem to find the problem. I can't find a lot of other info either and the info I do find seems to suggest my code is correct. I can send messages, so I know the connection works, but I cannot receive messages.

I create the connection like this, and then call the login function if a new connection is made:

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

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

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

The login function calls the chatListeners function which should setup all the listeners that are required when the user is logged in:

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

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

The messageListener is an imported function and currently only contains a console log:

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);
}

What did I do wrong?


Solution

  • So I found the cause of my problems. I was using the Xabber client to send messages back, but it turned out Xabber sent the messages to the wrong resource.

    On top of that I should have set my presence after login with a priority of >= 0.

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