【问题标题】:Not able to send message using strophe.js and ejabberd无法使用 strophe.js 和 ejabberd 发送消息
【发布时间】:2016-05-12 23:51:27
【问题描述】:

我正在使用 strophe.js 和 ejabberd 在我的站点中实现聊天。但我无法使用 mam 成功发送消息或检索消息。日志正在打印 SENT: 和 RECV: 字符串。我用来发送消息的代码是

var m = $msg({to: 'admin@ks111', from: 'admin@ks111', type: 'chat'}).c("body").t('body'); connection.send(m);

得到的SENT字符串是

SENT: <body rid='3431080199' xmlns='http://jabber.org/protocol/httpbind'><enable xmlns='urn:xmpp:sm:3' resume='false'/><message to='user1@server' from='user2@server' type='chat' xmlns='jabber:client'><body>body</body></message></body>

我尝试使用 gajim 客户端没有响应。但是,如果我要删除“body”标签,例如...

<message to='user1@server' from='user2@server' type='chat' xmlns='jabber:client'><body>body</body></message>

聊天被正确接收。默认情况下,所有请求都会添加“body”标签。可能是什么问题。请提供解决方案。

【问题讨论】:

    标签: ejabberd strophe.js


    【解决方案1】:

    body 只能由通过 BOSH 实现 XMPP 的库添加。它们是 BOSH 控制结构和信令的一部分。我假设您的 Strophe 客户端使用 BOSH,因此预计会有 BOSH 包装器。我还假设您正在使用 Gajim 使用标准 XMPP 进行连接,因此您需要使用没有 BOSH 包装器的标准 XMPP。否则不理解为XMPP包(body标签不是有效的XMPP包)。

    一切看起来都正常且符合预期。

    【讨论】:

    • 我如何在消息标签中添加cli:subject="TEXT MESSAGE"。我想要这样的东西<message cli:subject="TEXT MESSAGE"></message>
    猜你喜欢
    • 2016-10-25
    • 2015-07-01
    • 2011-10-17
    • 2017-05-16
    • 2017-05-04
    • 2012-03-27
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    相关资源
    最近更新 更多