コード例 #1
0
        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());
        }
コード例 #2
0
        public async Task <ChatMessage> ReceiveMessage(CancellationToken token = default)
        {
            var incoming = await messageQueue.ReadAsync(token);

            return(RedisChatMessageSerializer.FromString(chatRoom, incoming.Message));
        }
コード例 #3
0
 public Task AddMessage(ChatMessage message, CancellationToken token = default)
 {
     return(subscriber.PublishAsync(roomKey, RedisChatMessageSerializer.AsString(message)));
 }
コード例 #4
0
        public async Task TrackMessage(ChatMessage chatMessage, CancellationToken token = default)
        {
            await database.ListLeftPushAsync(chatKey, RedisChatMessageSerializer.AsString(chatMessage));

            await database.ListTrimAsync(chatKey, 0, historyLength);
        }