Пример #1
0
        private static async Task ListenAsync(int roomId, string userName, CancellationToken cancellationToken)
        {
            var stream = _client.Listen(new ListenRequest {
                RoomId = roomId
            });

            try
            {
                await foreach (var item in stream.ResponseStream.ReadAllAsync(cancellationToken))
                {
                    Console.WriteLine();
                    Console.WriteLine($"{item.UserName}: {item.Message}");
                    Console.WriteLine("> ");
                }
            }
            catch (RpcException e) when(e.StatusCode == StatusCode.Cancelled)
            {
            }
            catch (OperationCanceledException)
            {
            }
            finally
            {
                stream.Dispose();
            }
        }
Пример #2
0
        public void Join()
        {
            var response = client.Join(new ChatRequest()
            {
                Name = Name
            });

            System.Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")} [{response.Name}] join {response.Status}");

            cts = new CancellationTokenSource();

            ListenTask = Task.Run(async() =>
            {
                var listen = client.Listen(new ChatRequest()
                {
                    Name = Name
                });

                CancellationTokenSource _cts = null;
                _cts = new CancellationTokenSource();

                do
                {
                    try
                    {
                        await listen.ResponseStream.MoveNext(cts.Token);

                        //if (!ret) continue;
                        if (listen.ResponseStream.Current == null)
                        {
                            continue;
                        }

                        Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}->{listen.ResponseStream.Current.Name}:{listen.ResponseStream.Current.Message}");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                } while (!cts.IsCancellationRequested);
            }, cts.Token);
        }