/// <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>(); } }
/// <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; } }
/// <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>(); } }