agsXMPP客户端关于好友在线状态的设置及其响应的方法

本文详细介绍了在agsXMPP客户端中如何通过PresenceType.available和PresenceType.unavailable来设置在线状态,并讨论了PresenceType.unavailable的不推荐使用原因。通过简单的代码示例,展示了如何通知特定好友自己的在线状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

agsXMPP越来越多人用,最近有几个网友都问起如何在agsXMPP的客户端处理好友在线状态的设置以及响应。

agsXMPP里面有2个重要的地方可以设置在线状态:

1.PresenceType.available和PresenceType.unavailable,XMPP官方不推荐使用PresenceType.unavailable来实现隐身,为什么?A用户给B用户(或者所有用户)发送PresenceType.unavailable,那就相当于下线了,根本不能识别是“隐身”还是“下线”,有些偏门的工具喜欢把隐身的用户给显示出来。。。。。。。所以,那就不建议用PresenceType.unavailable咯。

2.ShowType.XXXXX,这个就不用多说了,其本身就是设置多种在线状态的。。。。


下面的代码实现了如何告诉特定好友(用循环就可以多个好友了),自己的在线状态:

    /// <summary>
    /// 告诉服务器/好友,我的当前可视状态
    /// </summary>
    /// <param name="jidTo">null表示通知服务器,非null则是指定好友</param>
    /// <param name="visible">0:可视,1:invisible,2:unavailable</param>
    public static void ChangMyState(String jidTo, int visible)
    {
        Presence p = new Presence();
        if (jidTo != null)
            p.To = new Jid(jidTo);
        if (visible == 0)//上线,完全可视
        {
            p.Type = PresenceType.available;
            p.Show = ShowType.chat;
        }
        else if (visible == 1)//上线,不可见
        {
            p.Type = PresenceType.available;
            p.Show = ShowType.away;
        }
        else if (visible == 2)//下线,不可见
        {
            p.Type = PresenceType.unavailable;
        }
        Cls_Config.XmppCon.Send(p);
    }


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值