如何使用converse库

时间:2016-07-11 12:25:42

标签: javascript xmpp chat openfire converse.js

我使用openfire作为XMPP服务器并使用converse作为客户端库。我想从聊天窗口向openfire发送聊天消息。为此,我想将文本发送到一个反向方法,该方法将消息发送到XMPP服务器。 我正在尝试使用以下内容发送消息:

var msg = converse.env.$msg({
      from: 'a1@localhost',
      to: 'a6@localhost',
      type: 'chat',
      body: "Hi"
   });
   converse.send(msg);

但是这会在websocket的控制台网络中发送以下帧:

  

来自='a1 @ localhost'的消息= ='a6 @ localhost'type ='chat'body ='嗨'xmlns ='jabber:client'/>

这不会将消息传输给其他用户,也不会将其存储在表中。我非常肯定我称之为错误的功能。任何人都可以提供任何帮助。

2 个答案:

答案 0 :(得分:2)

您正在调用正确的功能。

您可能会错过的内容:

  1. “a6 @ localhost”客户端中的消息监听器:正如我在文档中看到的那样功能很少

  2. 可能是服务器的正确名称。 “localhost”有问题。您可以 在他自己的网络面板上查看Openfire的真实服务名称

  3. 要检查在Openfire中传递的消息是否可以检查 OF的日志(检查调试一,但可能你必须启用它)。 实时消息不存储在数据库中,只存储在groupchat的消息中 而不是每次和离线消息。在db上找不到它们意味着什么
  4. https://conversejs.org/docs/html/development.html

    converse.chats.open('buddy@example.com');
    converse.chats.get('buddy@example.com');
    converse.listen.on('message', function (event, messageXML) { ... });
    

答案 1 :(得分:1)

语法错误。 conversejs使用strophe插件构造和发送消息。它公开了用于构造节的strophe $ msg消息构建器。它必须采用以下格式:

converse.env.$msg({from: 'a1@localhost', to: 'a6@localhost', type: 'chat'}).c('body').t('Hi');

您需要添加一个正文节点,并在其中添加消息的文本节点。

您还可以创建和添加自己的api方法,并在内部创建一个发送自定义节的方法,并使用api公开它。