目前,我能够连接到服务器,并且能够设置我的“状态”和我的存在。但是,我无法让我的“朋友/好友/联系人”出现。
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,但是我根本没有得到我的“联系人/朋友/好友”的存在。
解决方案:我已经解决了这个问题。解决方案是不在线程中运行任何这些处理程序。;)