public async Task <IReadOnlyCollection <ChatMessage> > LastMessages(uint count, CancellationToken token = default) { var messages = await database.ListRangeAsync(chatKey, 0, count); return(messages.Where(mes => mes.HasValue) .Select(mes => RedisChatMessageSerializer.FromString(chatRoom, mes.ToString())).ToArray()); }
public async Task <ChatMessage> ReceiveMessage(CancellationToken token = default) { var incoming = await messageQueue.ReadAsync(token); return(RedisChatMessageSerializer.FromString(chatRoom, incoming.Message)); }
public Task AddMessage(ChatMessage message, CancellationToken token = default) { return(subscriber.PublishAsync(roomKey, RedisChatMessageSerializer.AsString(message))); }
public async Task TrackMessage(ChatMessage chatMessage, CancellationToken token = default) { await database.ListLeftPushAsync(chatKey, RedisChatMessageSerializer.AsString(chatMessage)); await database.ListTrimAsync(chatKey, 0, historyLength); }