예제 #1
0
        /// <summary>
        /// 初始化实时消息客户端
        /// </summary>
        /// <param name="config"></param>
        public AVRealtime(Configuration config)
        {
            lock (mutex)
            {
                if ((int)config.OfflineMessageStrategy == 0)
                {
                    config.OfflineMessageStrategy = OfflineMessageStrategy.UnreadAck;
                }

                CurrentConfiguration = config;
                if (CurrentConfiguration.WebSocketClient != null)
                {
                    webSocketController = CurrentConfiguration.WebSocketClient;
                }
                if (CurrentConfiguration.SignatureFactory != null)
                {
                    this.SignatureFactory = CurrentConfiguration.SignatureFactory;
                }
                ReconnectOptions = new AVIMReconnectOptions()
                {
                    Interval = 5,
                    Retry    = 120
                };


                RegisterMessageType <AVIMMessage>();
                RegisterMessageType <AVIMTypedMessage>();
                RegisterMessageType <AVIMTextMessage>();
                RegisterMessageType <AVIMImageMessage>();
                RegisterMessageType <AVIMAudioMessage>();
                RegisterMessageType <AVIMVideoMessage>();
                RegisterMessageType <AVIMFileMessage>();
                RegisterMessageType <AVIMLocationMessage>();
            }
        }
예제 #2
0
        /// <summary>
        /// 初始化实时消息客户端
        /// </summary>
        /// <param name="config"></param>
        public AVRealtime(Configuration config)
        {
            lock (mutex)
            {
                if ((int)config.OfflineMessageStrategy == 0)
                {
                    config.OfflineMessageStrategy = OfflineMessageStrategy.UnreadAck;
                }

                CurrentConfiguration = config;
                if (CurrentConfiguration.WebSocketClient != null)
                {
                    webSocketController = CurrentConfiguration.WebSocketClient;
                }
                if (CurrentConfiguration.SignatureFactory != null)
                {
                    this.SignatureFactory = CurrentConfiguration.SignatureFactory;
                }
                ReconnectOptions = new AVIMReconnectOptions()
                {
                    Interval = 5,
                    Retry    = 120
                };


                RegisterMessageType <AVIMMessage>();
                RegisterMessageType <AVIMTypedMessage>();
                RegisterMessageType <AVIMTextMessage>();
                RegisterMessageType <AVIMImageMessage>();
                RegisterMessageType <AVIMAudioMessage>();
                RegisterMessageType <AVIMVideoMessage>();
                RegisterMessageType <AVIMFileMessage>();
                RegisterMessageType <AVIMLocationMessage>();
                RegisterMessageType <AVIMRecalledMessage>();

                // 注册服务端 goaway 指令
                var goAwayListener = new GoAwayListener();
                goAwayListener.OnGoAway += () => {
                    RouterController.ClearCache().ContinueWith(_ => {
                        reborn = true;
                        // 关闭 WebSocket
                        AVWebSocketClient.Disconnect();
                    });
                };
                SubscribeNoticeReceived(goAwayListener);

                reconnectTimes = 0;
            }
        }
예제 #3
0
 /// <summary>
 /// 初始化实时消息客户端
 /// </summary>
 /// <param name="config"></param>
 public AVRealtime(Configuration config)
 {
     lock (mutex)
     {
         CurrentConfiguration = config;
         if (CurrentConfiguration.WebSocketClient != null)
         {
             webSocketController = CurrentConfiguration.WebSocketClient;
         }
         if (CurrentConfiguration.SignatureFactory != null)
         {
             this.SignatureFactory = CurrentConfiguration.SignatureFactory;
         }
         ReconnectOptions = new AVIMReconnectOptions()
         {
             Interval = 5,
             Retry    = 120
         };
         RegisterMessageType <AVIMMessage>();
         RegisterMessageType <AVIMTypedMessage>();
         RegisterMessageType <AVIMTextMessage>();
     }
 }