C# 如何使用Jabber网络库实现XEP-0012
我正在C#Windows应用程序项目中制作聊天客户端。C# 如何使用Jabber网络库实现XEP-0012,c#,xmpp,C#,Xmpp,我正在C#Windows应用程序项目中制作聊天客户端。 我想知道JID的最后状态。如何在Jabber net.net库上实现XEP-0012(JID的最后一个活动)。请确保阅读,然后查看一些现有代码以获取一些示例jabber:iq:last从协议的角度来看应该是微不足道的,但许多客户端不再实现它了。我自己发现了它。。。我很高兴与大家分享。让它对想要它的人有用 public void RequestLastMessage(JID jabberid) { try
我想知道JID的最后状态。如何在Jabber net.net库上实现XEP-0012(JID的最后一个活动)。请确保阅读,然后查看一些现有代码以获取一些示例<代码>jabber:iq:last从协议的角度来看应该是微不足道的,但许多客户端不再实现它了。我自己发现了它。。。我很高兴与大家分享。让它对想要它的人有用
public void RequestLastMessage(JID jabberid)
{
try
{
LastIQ iq = new LastIQ(jabberClient1.Document);
iq.To = jabberid;
iq.Type = jabber.protocol.client.IQType.get;
jabberClient1.Tracker.BeginIQ(iq, LastMessage, null);
}
catch (Exception ex)
{
DebugLogger.LogRecord(ex.Message + " [ Function: " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Class: XMPPWrapper ]");
}
}
private void LastMessage(object sender, jabber.protocol.client.IQ iq, object state)
{
try
{
if ((iq == null) || (iq.Type != jabber.protocol.client.IQType.result))
return;
Last ll = iq.Query as Last;
if (iq.From != null && ll.Message != "")
if (ApplicationVariables.GlobalContactForm != null) ApplicationVariables.GlobalContactForm.SetOfflineStatus(ll.Message, iq.From);
}
catch (Exception ex)
{
DebugLogger.LogRecord(ex.Message + " [ Function: " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Class: XMPPWrapper ]");
}
}
在if(iq.From!=null&&ll.Message!=“”)行中
也检查ll!=空
。要获得额外的积分,请检查Caps,看看对方是否执行了此操作。另外,请确保您没有定期轮询此消息。这将导致您在许多服务器上很快受到速率限制。