how to create new group in xmpp server
-
27-10-2019 - |
سؤال
Am using Strophe.js library for communication between my application with XMPP(Openfire) server.
I want add user with group, How can i create new group? How can i mention group name with add buddy query?
This is my code for adding new user
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());
I refer XMPP extension over day but i cant find proper result
المحلول
You need to send a roster update. Read RFC 6121, Section 2 for details. You'll be sending this protocol:
<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>
With code something like:
$iq({'type':'set'}).c('query',{'xmlns':Strophe.NS.ROSTER})
.c('item', {'jid':'yyy@example.com','name':'nick'})
.c('group').t('My Group')
نصائح أخرى
I have made this Using below code.
XMPPRoomCoreDataStorage *rosterstorage =[[XMPPRoomCoreDataStorage alloc] init]; XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:rosterstorage jid:[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()];
Then
- (void)xmppRoomDidJoin:(XMPPRoom *)sender
{
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];
}