【问题标题】:Error Creating Chat Room StropheJS with ejabberd使用 ejabberd 创建聊天室 StropheJS 时出错
【发布时间】:2015-08-07 11:12:29
【问题描述】:

我正在尝试使用 StropheJS 创建一个聊天室

我的代码:

var presence = $pres({ to:  "testRoom@conference@localhost/yashwanth, from: Strophe.getBareJidFromJid(connection.jid) });
     Groupie.connection.send( presence.tree());
    Groupie.connection.muc.createInstantRoom("testRoom@conference.localhost/yashwanth",
      function(status) {
        console.log("Room Created Successfully", status);
      },
      function(status) {
        console.log("Error Creating Room", status);
      });

在创建房间时,我遇到了以下错误。

我发现 roomJID 的格式应该是 room_name@conference@HOST@/nickname 。所以按照我发送的格式。但它不会创建房间。

Error Creating Room <iq xmlns=​"jabber:​client" from=​
"conference@conference.localhost" to=​"yashwanth@inst1.eab.com/​
5441440311438943022710601" type=​"error" id=​"1:​sendIQ">​<query xmlns=​"http:​/​/​
jabber.org/​protocol/​muc#owner">​…​</query>​<error code=​"404" type=​"cancel">​
<item-not-found xmlns=​"urn:​ietf:​params:​xml:​ns:​xmpp-stanzas">​</item-not-
found>​<text xmlns=​"urn:​ietf:​params:​xml:​ns:​xmpp-stanzas">​Conference room 
does not exist​</text>​</error>​</iq>

我使用 ejabberd 作为我的 XMPP 服务器。如果房间创建,那么与房间相关的详细信息将保存在哪个数据库中?是保存在muc_registered 表还是muc_room 表中?

【问题讨论】:

    标签: javascript ejabberd strophe multiuserchat


    【解决方案1】:

    要加入 XMPP 中的房间,您无需先创建它。

    你的代码在做什么:

    1. 它将存在发送到房间,这意味着您正在加入它。如果它不存在,它将被创建。
    2. 您尝试创建房间,但由于该房间始终存在,因此应该总是失败。
    3. 您正在询问房间存放在哪里。除非它是持久的,否则它不会被存储,如果您没有配置 ejabberd 以将默认房间选项设置为持久,则在您的示例中不是这种情况。否则,您需要编辑XEP-0045 Multi User Chat 中定义的房间选项以使其持久化。持久化房间存储在 Mnesia 表中muc_room
    4. createInstantRoom 在 StropheJS MUC 插件中使用默认选项创建房间,就像加入一样,所以我不明白为什么在这里需要它。

    因此,我无法告诉您您要使用代码实现什么目标,但只需将状态发送到房间就足以创建一个非持久聊天室并加入它。无需致电createInstantRoom

    【讨论】:

    • 谢谢。所以只是将存在发送到房间会创建一个没有持久性的房间,对吗?
    • 是的,不需要为此使用即时创建空间。
    • 这是一个很好的答案。
    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 2012-12-17
    • 2011-09-19
    • 2021-11-04
    相关资源
    最近更新 更多