C# 如何使用Jabber网络库实现XEP-0012

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

我正在C#Windows应用程序项目中制作聊天客户端。
我想知道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,看看对方是否执行了此操作。另外,请确保您没有定期轮询此消息。这将导致您在许多服务器上很快受到速率限制。