Search code examples
handlerstrophemultiuserchat

How to add onmessage handler for strophe muc plugin


How to add on-message handler for strophe MUC plugin.

Currently i added callback function for join action.

Gab.connection.muc.join(room_name+"@muc.162.242.222.249",  login_id, 
function(message){ 

Solution

  • You can check message types in your general message handler:

    connection.addHandler(onMessage, null, 'message', null, null, null);
    

    ...

    function onMessage(msg) {
      var to = msg.getAttribute('to');
      var from = msg.getAttribute('from');
      var type = msg.getAttribute('type');
      var elems = msg.getElementsByTagName('body');
    
      if (type == "chat" && elems.length > 0) {
        var body = elems[0];
        console.log('CHAT: I got a message from ' + from + ': ' + Strophe.getText(body));
      } else if (type == "groupchat" && elems.length > 0) {
        var body = elems[0];
        var room = Strophe.unescapeNode(Strophe.getNodeFromJid(from));
        var nick = Strophe.getResourceFromJid(from);
        console.log('GROUP CHAT: I got a message from ' + nick + ': ' + Strophe.getText(body) + ' in room: ' + room);
      }
      // we must return true to keep the handler alive.  
      // returning false would remove it after it finishes.
      return true;
    }