【问题标题】:How to send chat messages using converse library如何使用 converse 库发送聊天消息
【发布时间】:2016-07-11 12:25:41
【问题描述】:

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

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

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

message from='a1@localhost' to='a6@loc​​alhost' type='chat' body='Hi' xmlns='jabber:client'/>

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

【问题讨论】:

    标签: javascript xmpp chat openfire converse.js


    【解决方案1】:

    您正在调用正确的函数。

    你可能会错过的:

    1. “a6@loc​​alhost”客户端中的消息侦听器:正如我在文档中看到的,功能很少

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多