public void RejoiningGroupsOnlyReceivesGroupsBelongingToHub() { var logRejoiningGroups = new LogRejoiningGroupsModule(); using (var host = new MemoryHost()) { host.HubPipeline.AddModule(logRejoiningGroups); host.Configuration.KeepAlive = null; host.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(1); host.Configuration.HeartbeatInterval = TimeSpan.FromSeconds(1); host.MapHubs(); var connection = new Client.Hubs.HubConnection("http://foo"); var proxy = connection.CreateHubProxy("MultGroupHub"); var proxy2 = connection.CreateHubProxy("MultGroupHub2"); connection.Start(host).Wait(); var user = new User { Name = "tester" }; proxy.InvokeWithTimeout("login", user); proxy2.InvokeWithTimeout("login", user); // Force Reconnect Thread.Sleep(TimeSpan.FromSeconds(3)); proxy.InvokeWithTimeout("joinRoom", user); proxy2.InvokeWithTimeout("joinRoom", user); Thread.Sleep(TimeSpan.FromSeconds(3)); Assert.True(logRejoiningGroups.GroupsRejoined["MultGroupHub"].Contains("foo")); Assert.True(logRejoiningGroups.GroupsRejoined["MultGroupHub"].Contains("tester")); Assert.False(logRejoiningGroups.GroupsRejoined["MultGroupHub"].Contains("foo2")); Assert.False(logRejoiningGroups.GroupsRejoined["MultGroupHub"].Contains("tester2")); Assert.True(logRejoiningGroups.GroupsRejoined["MultGroupHub2"].Contains("foo2")); Assert.True(logRejoiningGroups.GroupsRejoined["MultGroupHub2"].Contains("tester2")); Assert.False(logRejoiningGroups.GroupsRejoined["MultGroupHub2"].Contains("foo")); Assert.False(logRejoiningGroups.GroupsRejoined["MultGroupHub2"].Contains("tester")); connection.Stop(); } }
public void RejoiningGroupsOnlyReceivesGroupsBelongingToHub() { var logRejoiningGroups = new LogRejoiningGroupsModule(); using (var host = new MemoryHost()) { host.Configure(app => { var config = new HubConfiguration { Resolver = new DefaultDependencyResolver() }; app.MapHubs("/signalr", config); config.Resolver.Resolve<IHubPipeline>().AddModule(logRejoiningGroups); var configuration = config.Resolver.Resolve<IConfigurationManager>(); // The following sets the heartbeat to 1 s configuration.DisconnectTimeout = TimeSpan.FromSeconds(6); configuration.KeepAlive = null; configuration.ConnectionTimeout = TimeSpan.FromSeconds(2); }); var connection = new Client.Hubs.HubConnection("http://foo"); var proxy = connection.CreateHubProxy("MultGroupHub"); var proxy2 = connection.CreateHubProxy("MultGroupHub2"); connection.Start(host).Wait(); var user = new User { Name = "tester" }; proxy.InvokeWithTimeout("login", user); proxy2.InvokeWithTimeout("login", user); // Force Reconnect Thread.Sleep(TimeSpan.FromSeconds(3)); proxy.InvokeWithTimeout("joinRoom", user); proxy2.InvokeWithTimeout("joinRoom", user); Thread.Sleep(TimeSpan.FromSeconds(3)); Assert.True(logRejoiningGroups.GroupsRejoined["MultGroupHub"].Contains("foo")); Assert.True(logRejoiningGroups.GroupsRejoined["MultGroupHub"].Contains("tester")); Assert.False(logRejoiningGroups.GroupsRejoined["MultGroupHub"].Contains("foo2")); Assert.False(logRejoiningGroups.GroupsRejoined["MultGroupHub"].Contains("tester2")); Assert.True(logRejoiningGroups.GroupsRejoined["MultGroupHub2"].Contains("foo2")); Assert.True(logRejoiningGroups.GroupsRejoined["MultGroupHub2"].Contains("tester2")); Assert.False(logRejoiningGroups.GroupsRejoined["MultGroupHub2"].Contains("foo")); Assert.False(logRejoiningGroups.GroupsRejoined["MultGroupHub2"].Contains("tester")); connection.Stop(); } }