在converseJS插件中阅读自定义节?

时间:2018-02-14 15:28:51

标签: javascript converse.js

是否可以在converse.js中接收自定义节?

我尝试listen收到消息:

converse.plugins.add('dummy', {
  initialize: function() {
    var _converse = this._converse;

    _converse.api.listen.on('message', function(xmlMessage) {
      console.log('Received message!');
    });
  }
});

我的自定义节看起来像这样:

<message to='...' from='...' type='groupchat'>
    <custom_stanza>
        <created_at>2018-02-14T16:25:00+01:00</created_at>
        <store xmlns='urn:xmpp:hints'/>
    </custom_stanza>
</message>

但不幸的是,这一节不会在这里得到认可。正常消息有效。

1 个答案:

答案 0 :(得分:1)

我不确定为什么没有为您的自定义消息触发message事件。 converse.js代码中必须有一些假设,您的自定义消息无法实现。

Converse.js使用了Strophe.js,因此您可以使用Strophe的addHandler在较低级别注册事件处理程序。

以下是您将如何做到这一点:

converse.plugins.add('dummy', {
  initialize: function() {
    var _converse = this._converse;

    _converse.on('connected', () => {

      // _converse.connection is an instance of Strophe.Connection
      // which provides the `addHandler` method.

      _converse.connection.addHandler((message) => {
         // Your message handling code comes here...

      }, null, 'message');
   });
  }
});

此用例的一个示例位于converse-bookmarks.js插件中。