• Spark研究笔记9:重要的工厂类PresenceManager(原创) CVT


    PresenceManager用于用户的在线状态和模式处理,类 Presence 位于org.jivesoftware.smack.packet,说明:

    public enum Type {
    
           /**
            * The user is available to receive messages (default).
            */
            available,
    
            /**
             * The user is unavailable to receive messages.
             */
            unavailable,
    
            /**
             * Request subscription to recipient's presence.
             */
            subscribe,
    
            /**
             * Grant subscription to sender's presence.
             */
            subscribed,
    
            /**
             * Request removal of subscription to sender's presence.
             */
            unsubscribe,
    
            /**
             * Grant removal of subscription to sender's presence.
             */
            unsubscribed,
    
            /**
             * The presence packet contains an error message.
             */
            error
        }
    
        /**
         * An enum to represent the presence mode.
         */
        public enum Mode {
    
            /**
             * Free to chat.
             */
            chat,
    
            /**
             * Available (the default).
             */
            available,
    
            /**
             * Away.
             */
            away,
    
            /**
             * Away for an extended period of time.
             */
            xa,
    
            /**
             * Do not disturb.
             */
            dnd
        }

    /**
         * Returns true if the user is online.
         *
         * @param jid the jid of the user.
         * @return true if online.
         */
        public static boolean isOnline(String jid) {
            final Roster roster = SparkManager.getConnection().getRoster();
            Presence presence = roster.getPresence(jid);
            return presence.isAvailable();
        }
    
        /**
         * Returns true if the user is online and their status is available or free to chat.
         *
         * @param jid the jid of the user.
         * @return true if the user is online and available.
         */
        public static boolean isAvailable(String jid) {
            final Roster roster = SparkManager.getConnection().getRoster();
            Presence presence = roster.getPresence(jid);
            return presence.isAvailable() && !presence.isAway();
        }
    
        /**
         * Returns true if the user is online and their mode is available or free to chat.
         *
         * @param presence the users presence.
         * @return true if the user is online and their mode is available or free to chat.
         */
        public static boolean isAvailable(Presence presence) {
            return presence.isAvailable() && !presence.isAway();
        }
    
        /**
         * 返回用户状态
         *
         * @param jid the users jid.
         * @return the users presence.
         */
        public static Presence getPresence(String jid) {
            final Roster roster = SparkManager.getConnection().getRoster();
            return roster.getPresence(jid);
        }
    
        /**
         * JID完整全称,例如(ex. derek@jivesoftware.com --> derek@jivesoftware.com/spark)
         */
        public static String getFullyQualifiedJID(String jid) {
            final Roster roster = SparkManager.getConnection().getRoster();
            Presence presence = roster.getPresence(jid);
            return presence.getFrom();
        }
  • 相关阅读:
    Python 描述符(descriptor) 杂记
    Celery 使用简介
    异步任务神器 Celery 简明笔记
    高性能框架gevent和gunicorn在web上的应用及性能测试
    Flask + Gunicorn + Nginx 部署
    Mysql查看最大连接数和修改最大连接数
    配置 influxDB 鉴权及 HTTP API 写数据的方法
    Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
    linux端口开放指定端口的两种方法
    java自带的监控工具VisualVM一
  • 原文地址:https://www.cnblogs.com/openfire/p/3047621.html
Copyright © 2020-2023  润新知