예제 #1
0
        public async Task SendAllAsyncDoesNotWriteToDisconnectedConnectionsOutput()
        {
            using (var client1 = new TestClient())
                using (var client2 = new TestClient())
                {
                    var manager     = new DefaultHubLifetimeManager <MyHub>(new Logger <DefaultHubLifetimeManager <MyHub> >(NullLoggerFactory.Instance));
                    var connection1 = HubConnectionContextUtils.Create(client1.Connection);
                    var connection2 = HubConnectionContextUtils.Create(client2.Connection);

                    await manager.OnConnectedAsync(connection1).OrTimeout();

                    await manager.OnConnectedAsync(connection2).OrTimeout();

                    await manager.OnDisconnectedAsync(connection2).OrTimeout();

                    await manager.SendAllAsync("Hello", new object[] { "World" }).OrTimeout();

                    var message = Assert.IsType <InvocationMessage>(client1.TryRead());
                    Assert.Equal("Hello", message.Target);
                    Assert.Single(message.Arguments);
                    Assert.Equal("World", (string)message.Arguments[0]);

                    Assert.Null(client2.TryRead());
                }
        }
        public async Task InvokeAllAsyncDoesNotWriteToDisconnectedConnectionsOutput()
        {
            using (var client1 = new TestClient())
                using (var client2 = new TestClient())
                {
                    var output1 = Channel.CreateUnbounded <HubMessage>();
                    var output2 = Channel.CreateUnbounded <HubMessage>();

                    var manager     = new DefaultHubLifetimeManager <MyHub>();
                    var connection1 = new HubConnectionContext(output1, client1.Connection);
                    var connection2 = new HubConnectionContext(output2, client2.Connection);

                    await manager.OnConnectedAsync(connection1);

                    await manager.OnConnectedAsync(connection2);

                    await manager.OnDisconnectedAsync(connection2);

                    await manager.InvokeAllAsync("Hello", new object[] { "World" });

                    Assert.True(output1.In.TryRead(out var item));
                    var message = item as InvocationMessage;
                    Assert.NotNull(message);
                    Assert.Equal("Hello", message.Target);
                    Assert.Single(message.Arguments);
                    Assert.Equal("World", (string)message.Arguments[0]);

                    Assert.False(output2.In.TryRead(out item));
                }
        }
예제 #3
0
 public override Task OnDisconnectedAsync(HubConnectionContext connection)
 {
     return(_defaultHubLifetimeManager.OnDisconnectedAsync(connection));
 }