0

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">​&lt;query xmlns=​"http:​/​/​
jabber.org/​protocol/​muc#owner">​…​&lt;/query>​&lt;error code=​"404" type=​"cancel">​
<item-not-found xmlns=​"urn:​ietf:​params:​xml:​ns:​xmpp-stanzas">​&lt;/item-not-
found>​&lt;text xmlns=​"urn:​ietf:​params:​xml:​ns:​xmpp-stanzas">​Conference room 
does not exist​&lt;/text>​&lt;/error>​&lt;/iq>

また、XMPP サーバーとして ejabberd を使用しています。ルームが作成された場合、ルームに関連する詳細はどのデータベースに保存されますか? muc_registeredテーブルまたはテーブルに保存しますかmuc_room

4

1 に答える 1

1

XMPP でルームに参加するために、最初にルームを作成する必要はありません。

あなたのコードが行っていることは次のとおりです。

  1. 部屋にプレゼンスを送信します。つまり、あなたがそれに参加しています。存在しない場合は作成されます。
  2. ルームを作成しようとしますが、ルームは常に存在するため、常に失敗するはずです。
  3. あなたは部屋がどこに保管されているかを尋ねています。永続的でない限り保存されません。これは、ejabberd を構成してデフォルトのルーム オプションを永続的に設定しなかった場合には当てはまりません。それ以外の場合は、 XEP-0045 マルチ ユーザー チャットで定義されているようにルーム オプションを編集して永続化する必要があります。永続的な部屋は Mnesia テーブルに保存されますmuc_room
  4. createInstantRoomStropheJS MUC プラグインでは、参加するのと同じように、デフォルトのオプションで部屋を作成するので、ここで必要な理由がわかりません。

そのため、コードで何を達成しようとしているのかわかりませんが、ルームにプレゼンスを送信するだけで、非永続的なチャット ルームを作成して参加できます。電話する必要はありませんcreateInstantRoom

于 2015-08-07T11:50:50.660 に答える