private async Task MessageBackgroundPolling() { LiveChatMessage lastMessage = null; while (!this.messageBackgroundPollingTokenSource.IsCancellationRequested) { try { LiveChatMessagesResultModel result = await this.connection.LiveChat.GetRecentMessages(this.broadcast, maxResults : 1000); if (result != null) { if (lastMessage != null) { List <LiveChatMessage> newMessages = new List <LiveChatMessage>(); foreach (LiveChatMessage message in result.Messages) { if (message.Id.Equals(lastMessage.Id)) { break; } newMessages.Add(message); } this.OnMessagesReceived?.Invoke(this, newMessages); } lastMessage = result.Messages.FirstOrDefault(); await Task.Delay((int)result.PollingInterval); } } catch (TaskCanceledException) { } catch (Exception ex) { Logger.Log(ex); } } }
private async Task MessageBackgroundPolling() { string nextResultsToken = null; while (!this.messageBackgroundPollingTokenSource.IsCancellationRequested) { try { if (broadcast != null) { LiveChatMessagesResultModel result = await this.connection.LiveChat.GetMessages(this.broadcast, nextResultsToken : nextResultsToken, maxResults : 200); if (result != null) { List <LiveChatMessage> newMessages = new List <LiveChatMessage>(); foreach (LiveChatMessage message in result.Messages) { if (!messageIDs.Contains(message.Id)) { newMessages.Add(message); messageIDs.Add(message.Id); } } if (newMessages.Count > 0) { this.OnMessagesReceived?.Invoke(this, newMessages); } nextResultsToken = result.NextResultsToken; await Task.Delay((int)result.PollingInterval); } else { await Task.Delay(10000); } } else { this.broadcast = await this.connection.LiveBroadcasts.GetActiveBroadcast(); await Task.Delay(60000); } } catch (TaskCanceledException) { } catch (Exception ex) { Logger.Log(ex); } } }
private async Task MessageBackgroundPolling() { while (!this.messageBackgroundPollingTokenSource.IsCancellationRequested) { try { if (this.Broadcast != null) { LiveChatMessagesResultModel result = await this.connection.LiveChat.GetMessages(this.Broadcast); if (result != null) { List <LiveChatMessage> newMessages = new List <LiveChatMessage>(); foreach (LiveChatMessage message in result.Messages) { if (!messageIDs.Contains(message.Id)) { newMessages.Add(message); messageIDs.Add(message.Id); } } if (newMessages.Count > 0) { this.OnMessagesReceived?.Invoke(this, newMessages); } int pollingInterval = Math.Max((int)result.PollingInterval, this.minimumPollTimeMilliseconds); await Task.Delay(pollingInterval); } else { await Task.Delay(10000); } } else { this.Broadcast = await this.connection.LiveBroadcasts.GetMyActiveBroadcast(); await Task.Delay(60000); } } catch (TaskCanceledException) { } catch (Exception ex) { Logger.Log(ex); } } }