如何使OnPresence和OnRosterList不响应

时间:2015-03-08 03:27:14

标签: c# agsxmpp

目前,我能够连接到服务器,并且能够设置我的“状态”和我的存在。但是,我无法让我的“朋友/好友/联系人”上来。

   xmpp = new XmppClientConnection();
   xmpp.ConnectServer = 
        xmpp.UseSSL = true;
        xmpp.Port = 5223;

        xmpp.Server = 
        xmpp.Resource = 
        xmpp.UseSSL = true;
        xmpp.Port = 5223;

        xmpp.Username = username;
        xmpp.Password = password;
        xmpp.SocketConnectionType = SocketConnectionType.Direct;
        xmpp.AutoRoster = true;
        xmpp.AutoPresence = true;
        xmpp.AutoResolveConnectServer = false;
        xmpp.AutoAgents = false;
        xmpp.RegisterAccount = false;
        xmpp.UseCompression = false;

        xmpp.OnReadXml += new XmlHandler(OnReadXml);
        xmpp.OnWriteXml += new XmlHandler(OnWriteXml);

        xmpp.OnStreamError += new XmppElementHandler(OnStreamError);
        xmpp.OnSocketError += new ErrorHandler(OnSocketError);
        xmpp.ClientSocket.OnValidateCertificate += new RemoteCertificateValidationCallback(ClientSocket_OnValidateCertificate);

        xmpp.OnIq += new IqHandler(OnIq);
        xmpp.OnRosterStart += new ObjectHandler(OnRosterStart);
        xmpp.OnRosterItem += new agsXMPP.XmppClientConnection.RosterHandler(OnRosterItem);
        xmpp.OnRosterEnd += new ObjectHandler(OnRosterEnd);

        xmpp.OnPresence += new PresenceHandler(OnPresence);
        xmpp.OnMessage += new MessageHandler(OnMessage);
        xmpp.OnError += new ErrorHandler(OnError);
        xmpp.OnLogin += new ObjectHandler(OnLogin);
        xmpp.OnAuthError += new XmppElementHandler(OnAuthError);
        xmpp.OnClose += new ObjectHandler(OnClose);
        xmpp.OnSaslStart += new agsXMPP.sasl.SaslEventHandler(OnSaslStart);

        try { xmpp.Open(); }
        catch {  }

        do { Thread.Sleep(300); }
        while (!xmpp.Authenticated);

        for (bool IsBinding = false; IsBinding == false; Thread.Sleep(1000))
           if (xmpp.XmppConnectionState.ToString().CompareTo("Binding") != 0)
               IsBinding = true;

对于我的OnPresence和OnRosterList,我有(不幸的是,以下都没有。)

    private void OnRosterStart(object sender)
    {
        Console.WriteLine("Roster has started.");
    }

    private void OnRosterItem(object sender, agsXMPP.protocol.iq.roster.RosterItem item)
    {
        messenger.AddToRoster(item.Name);
        messenger.AddToRoster(item.Jid.User);
    }
    private void OnRosterEnd(object sender)
    {
        Console.WriteLine("Roster has ended.");
    }

    private void OnPresence(object sender, Presence pres)
    {
        MessageBox.Show("Hello");
        Console.WriteLine("Here are your contacts: ");
        Console.WriteLine("{0}@{1}  {2}", pres.From.User, pres.From.Server, pres.Type);
    }

http://puu.sh/gr73T/a8595b59aa.png

感谢。

问题陈述:最初,OnPresence不做任何事情。 (我知道这是一个异步功能,但是,在让应用程序保持打开状态30分钟等待之后,显然无法正常工作。)此外,我想我曾经听说过,一旦你将你的状态发送到服务器就应该处理OnPresence,但是我根本没有得到我的“联系人/朋友/伙伴”。

解决方案: 我已经解决了这个问题。解决方案是不在线程中运行任何这些处理程序。 ;)

0 个答案:

没有答案
相关问题