2012-01-11 4 views
4

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

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

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

var str1=$pres({'xmlns':'jabber:client','from':[email protected],'to':[email protected],'type':'subscribe'}).c('nick',{'xmlns':'http://jabber.org/protocol/nick'}).t(userName); 
connection.send(str1.tree()); 

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

ответ

5

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

<iq from='[email protected]/balcony' 
    id='rs1' 
    type='set'> 
    <query xmlns='jabber:iq:roster'> 
    <item jid='[email protected]' name='nick'> 
     <group>My Group</group> 
    </item>   
    </query> 
</iq> 

С кодом что-то вроде:

$iq({'type':'set'}).c('query',{'xmlns':Strophe.NS.ROSTER}) 
    .c('item', {'jid':'[email protected]','name':'nick'}) 
     .c('group').t('My Group') 
+1

Хай Джо в этом случае я не могу добавить пользователя в определенной группе. Первый я хочу создать новую группу, то только не его возможным., Что расширение будет обеспечить это –

+2

Там нет такого понятия, как пустая группа в базе XMPP. Вы можете сохранить список пустых групп по отдельности, возможно, используя PEP (XEP-0163: http://xmpp.org/extensions/xep-0163.html) или, если не считать этого частного хранилища (XEP-0049: http: // xmpp.org/extensions/xep-0049.html). Для любого из них используйте новое пространство имен, которое вы контролируете, но не ожидайте, что другие клиенты смогут видеть пустые группы. Если вы решительно настроены на это, напишите новый XEP и отправьте его в XSF: http://xmpp.org/xmpp-protocols/xmpp-extensions/submitting-a-xep/ –

0

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

XMPPRoomCoreDataStorage * rosterstorage = [[XMPPRoomCoreDataStorage alloc] init]; XMPPRoom * xmppRoom = [[XMPPRoom alloc] initWithRoomStorage: rosterstorage jid: [XMPPJID jidWithString: @ "[email protected]"] 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()]; 

Затем

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

{

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

[iq addAttributeWithName:@"id" stringValue:[NSString stringWithFormat:@"inroom-cr%@",groupName]]; 
[iq addAttributeWithName:@"to" stringValue::@"[email protected]"]; 
[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]; 

}

Смежные вопросы