как создать новую группу на сервере xmpp - PullRequest
4 голосов
/ 11 января 2012

Использую библиотеку Strophe.js для связи между моим приложением и сервером XMPP (Openfire).

Я хочу добавить пользователя в группу. Как я могу создать новую группу?Как я могу упомянуть имя группы с помощью запроса на добавление в друзья?

Это мой код для добавления нового пользователя

var str1=$pres({'xmlns':'jabber:client','from':xxx@example.com,'to':yyy@example.com,'type':'subscribe'}).c('nick',{'xmlns':'http://jabber.org/protocol/nick'}).t(userName);
 connection.send(str1.tree());

Я использую расширение XMPP в течение дня, но не могу найти правильный результат

Ответы [ 2 ]

5 голосов
/ 14 января 2012

Вам необходимо отправить обновление реестра. Прочтите RFC 6121, раздел 2 для получения подробной информации.Вы будете отправлять этот протокол:

<iq from='juliet@example.com/balcony'
    id='rs1'
    type='set'>
   <query xmlns='jabber:iq:roster'>
     <item jid='yyy@example.com' name='nick'>
        <group>My Group</group>
     </item>         
   </query>
</iq>

с кодом, например:

$iq({'type':'set'}).c('query',{'xmlns':Strophe.NS.ROSTER}) 
   .c('item', {'jid':'yyy@example.com','name':'nick'})
       .c('group').t('My Group')
0 голосов
/ 23 июля 2013

Я сделал это, используя код ниже.

XMPPRoomCoreDataStorage * rosterstorage = [[XMPPRoomCoreDataStorage alloc] init]; XMPPRoom * xmppRoom = [[XMPPRoom alloc] initWithRoomStorage: js реестра: [XMPPJID jidWithString: @ "MyFirstGroup@conference.test-desktop"] dispatchQueue: dispatch_get_main_queue ()];

[xmppRoom activate:[[self appDelegate]xmppStream]];
[xmppRoom joinRoomUsingNickname:@"DeveloperQ" history:nil];

 [[[self appDelegate] xmppStream]  addDelegate:self delegateQueue:dispatch_get_main_queue()];
 [xmppRoom addDelegate:self  delegateQueue:dispatch_get_main_queue()];

Тогда

  • (void) xmppRoomDidJoin: (XMPPRoom *) отправитель

{

NSXMLElement * iq = [NSXMLElement elementWithName: @ "iq"];

[iq addAttributeWithName:@"id" stringValue:[NSString stringWithFormat:@"inroom-cr%@",groupName]]; 
[iq addAttributeWithName:@"to" stringValue::@"MyFirstGroup@conference.test-desktop"];
[iq addAttributeWithName:@"type" stringValue:@"set"];
NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:XMPPMUCOwnerNamespaceName];
NSXMLElement *xelem = [NSXMLElement elementWithName:@"x" xmlns:@"jabber:x:data"];
[xelem addAttributeWithName:@"type" stringValue:@"submit"];
[query addChild:xelem];
[iq addChild:query];
[[[self appDelegate] xmppStream] sendElement:iq];

}

...