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

Reading custom stanzas in converseJS plugin?

是否可以在 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>

但不幸的是,这里无法识别此节。正常消息有效。

我不确定为什么没有为您的自定义消息触发 message 事件。 converse.js 代码中一定有一些您的自定义消息不满足的假设。

Converse.js 使用 Strophe.js under the hood, so you can use Strophe's 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 插件中。