public void DiscoverItems(Jid to, Jid from, string node, IqCB cb, object cbArgs) { var discoIq = new DiscoItemsIq(IqType.get); discoIq.To = to; if (from != null) { discoIq.From = from; } if (node != null && node.Length > 0) { discoIq.Query.Node = node; } xmppConnection.IqGrabber.SendIq(discoIq, cb, cbArgs); }
private void FindParticipants() { TreeNode node = treeGC.SelectedNode; if (node == null && node.Level != 1) return; DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get); discoIq.To = new Jid((string)node.Tag); this.XmppCon.IqGrabber.SendIq(discoIq, new IqCB(OnGetParticipants), node); }
/// <summary> /// Discover chatromms of a chat server using disco (service discovery) /// </summary> private void FindChatRooms() { TreeNode node = treeGC.SelectedNode; if (node == null || node.Level != 0) return; DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get); discoIq.To = new Jid(node.Text); this.XmppCon.IqGrabber.SendIq(discoIq, new IqCB(OnGetChatRooms), node); }
public void DiscoverItems(Jid to, Jid from, string node, IqCB cb, object cbArgs) { DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get); discoIq.To = to; if (from != null) discoIq.From = from; if (node != null && node.Length > 0) discoIq.Query.Node = node; xmppConnection.IqGrabber.SendIq(discoIq, cb, cbArgs); }
//RECIEVED: //<iq xmlns="jabber:client" id="agsXMPP_5" type="get" to="localhost"> // <query xmlns="http://jabber.org/protocol/disco#items" /> //</iq> //RESPONSE: //<iq xmlns="jabber:client" from="localhost" to="test@localhost/MF" type="result" id="agsXMPP_5"> // <query xmlns="http://jabber.org/protocol/disco#items"> // <item name="Coversant XMPP Administractive Gateway" jid="administration.localhost" /> // <item jid="administration.localhost" node="http://winfessor.com/protocol/administration/policy" /> // <item name="pubsub - Publish Subscribe Gateway" jid="pubsub.localhost" /> // <item name="Open S2S Sessions" jid="s2s.localhost" /> // <item name="conference - Multi User Chat" jid="conference.localhost" /> // <item name="SoapBox User Directory" jid="users.localhost" /> // <item name="jabber - Default Jabber Gateway" jid="localhost" /> // <item jid="localhost" node="http://jabber.org/protocol/commands" /> // </query> //</iq> private void ProcessDiscoItemsIQ(IQ iq) { DiscoItemsIq discoItemsIq = new DiscoItemsIq(IqType.result); discoItemsIq.Namespace = agsXMPP.Uri.CLIENT; discoItemsIq.Id = iq.Id; discoItemsIq.From = iq.To; discoItemsIq.To = this.m_ClientAccount.JID; ///*******此处为配置扩展****************** ///当前仅实现服务发现 ///*************************************** DiscoItem discoItem = null; foreach (BaseService service in this.m_Server.ServiceList) { discoItem = new DiscoItem(); discoItem.Name = service.Name; discoItem.Jid = service.JID; if (iq.To.Bare.ToLower().Contains(service.JID.Bare.ToLower())) { discoItemsIq.Query.RemoveAllChildNodes(); if (service.ServiceType == ServiceType.GroupChat) { MucService muc = service as MucService; if (service.JID.Bare.ToLower() == iq.To.Bare.ToLower()) { //<iq from='macbeth.shakespeare.lit' // id='disco2' // to='[email protected]/pda' // type='result'> // <query xmlns='http://jabber.org/protocol/disco#items'> // <item jid='*****@*****.**' // name='A Lonely Heath'/> // <item jid='*****@*****.**' // name='A Dark Cave'/> // <item jid='*****@*****.**' // name='The Palace'/> // <item jid='*****@*****.**' // name='Macbeth's Castle'/> // </query> //</iq> foreach (KeyValuePair<string, ChatRoom> item in muc.GetRooms()) { discoItem = new DiscoItem(); discoItem.Name = item.Key; discoItem.Jid = item.Value.JID; discoItemsIq.Query.AddDiscoItem(discoItem); } } else if (iq.To.Bare.ToLower().EndsWith("@" + service.JID.Bare.ToLower())) { } else { } } else if (service.ServiceType == ServiceType.ContactSearch) { } else if (service.ServiceType == ServiceType.FileTransfer) { } else { } break; } else { discoItemsIq.Query.AddDiscoItem(discoItem); } } Send(discoItemsIq); }
/// <summary> /// Busca los participantes de la sala. Solo los que estan conectados.- /// </summary> /// <param name="roomName">nombreSala@server</param> public void FindParticipants(String roomName) { DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get); //discoIq.To = new Jid((string)roomName); //discoIq.To = new Jid("amigos.conference.santana"); discoIq.To = new Jid("*****@*****.**"); discoIq.From = xmppCon.MyJID; this.XmppCon.IqGrabber.SendIq(discoIq, new IqCB(OnGetParticipants), roomName); }
/// <summary> /// Busca las salas de conferencias de alguna sala.- /// /// </summary> /// <param name="name">Reprecentan Chatservers /// EJ: conference.jabbers.ogr</param> public void FindChatRooms(string name) { //wChatRoomsList = new List<ChatRooms>(); if (this.XmppCon == null) return; DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get); discoIq.To = new Jid(name); this.XmppCon.IqGrabber.SendIq(discoIq, new IqCB(OnGetChatRooms), name); }