如何使用Jabber-net Library实现XEP-0012

时间:2014-02-17 10:56:56

标签: c# xmpp

我正在C#Windows应用程序项目中创建一个聊天客户端。 我想获得JID的最后状态。如何在Jabber-net .NET库上实现XEP-0012(JID的最后一个活动)。

2 个答案:

答案 0 :(得分:1)

请务必阅读Wiki,然后查看一些示例的现有代码。从协议的角度来看,jabber:iq:last应该是微不足道的,但许多客户不再实现它了。

答案 1 :(得分:1)

我自己找到了......我很乐意分享它。让它对那些想要这个的人有用..

    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 ]");
        }

    }