如何使用匡威库发送聊天消息

How to send chat messages using converse library

本文关键字:聊天 消息 何使用      更新时间:2023-09-26

我正在使用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' 类型='聊天' 正文='Hi' xmlns='jabber:client'/>

这不会将消息传输给其他用户,也不会将其存储在表中。我几乎可以肯定我调用了一个错误的函数。任何人都可以提供任何帮助。

您正在调用正确的函数。

您可能会错过什么:

  1. "a6@localhost"客户端中的消息侦听器:正如我在文档中读到的那样,函数很少

  2. 可能是服务器的正确名称。"本地主机"有问题。您可以检查 Openfire 在他自己的 Web 面板上的真实服务名称

  3. 要检查消息是否在 Openfire 中传递,您可以检查OF 的日志(检查调试一个,但可能您必须启用它)。实时消息不存储在数据库中,仅存储在群聊的数据库中而不是每次和离线消息。在数据库上找不到它们没有任何意义

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

语法错误。 Conversejs 使用 Sthophe 插件来构造和发送消息。它公开了用于构造节的消息生成器$msg strephe 。它必须采用以下格式:

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

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

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