zoukankan      html  css  js  c++  java
  • Spark研究笔记6:重要的工厂类SessionManager(原创) CVT

    SessionManager负责xmppconnection 连接会话处理比如处理连接错误添加会议监听检索用户连接,等。

    SessionManager实现了接口ConnectionListener,ConnectionListener的定义:

    public interface ConnectionListener {

        public void connectionClosed();

        public void connectionClosedOnError(Exception e);
       
        public void reconnectingIn(int seconds);

        public void reconnectionSuccessful();

        public void reconnectionFailed(Exception e);
    }

    可以看出,ConnectionListener定义了关闭、重连、失败等操作。

    SessionManagersession初始化,

    /**
         * Initializes session.
         *
         * @param connection the XMPPConnection used in this session.
         * @param username   the agents username.
         * @param password   the agents password.
         */
        public void initializeSession(XMPPConnection connection, String username, String password) {
            this.connection = connection;
            this.username = username;
            this.password = password;
            this.userBareAddress = StringUtils.parseBareAddress(connection.getUser());
    
            // create workgroup session
            personalDataManager = new PrivateDataManager(getConnection());
    
            // Discover items
            discoverItems();
    
    
            ProviderManager.getInstance().addExtensionProvider("event", "http://jabber.org/protocol/disco#info", new Features.Provider());
        }

    设置discoverItems ,DiscoverItems 是一个IQ包,用于请求和接受相关 XMPP 实体,另外,它能被寻址查询,比如通过JID,或者节点名。

    /**
         * Does the initial service discovery.
         */
        private void discoverItems() {
            ServiceDiscoveryManager disco = ServiceDiscoveryManager.getInstanceFor(SparkManager.getConnection());
            try {
                discoverItems = disco.discoverItems(SparkManager.getConnection().getServiceName());
            }
            catch (XMPPException e) {
                Log.error(e);
                discoverItems = new DiscoverItems();
            }
        }

     

  • 相关阅读:
    javascript中的throttle和debounce
    移动端Click300毫秒点击延迟的来龙去脉(转)
    HTTP Keep-Alive详解[转]
    深入浅出requireJS-1
    判断网站是微信打开的
    2015腾讯和阿里前端实习生面试经
    解决ant design 中 select的option 随页面滚动条滚动的bug
    解决window.close()方法兼容各个浏览器(ie关闭会进行弹框提示是否关闭)
    多维数组遍历添加新属性,以及获取所有key
    Vue 路由解耦与快捷新增
  • 原文地址:https://www.cnblogs.com/openfire/p/3047614.html
Copyright © 2011-2022 走看看