private static void RunInMemoryHost() { var host = new MemoryHost(); host.MapConnection <MyConnection>("/echo"); var connection = new Connection("http://foo/echo"); connection.Received += data => { Console.WriteLine(data); }; connection.StateChanged += change => { Console.WriteLine(change.OldState + " => " + change.NewState); }; connection.Start(host).Wait(); ThreadPool.QueueUserWorkItem(_ => { try { while (true) { connection.Send(DateTime.Now.ToString()); Thread.Sleep(2000); } } catch { } }); }
public void GroupsAreNotReadOnConnectedAsyncLongPolling() { var host = new MemoryHost(); host.MapConnection <MyConnection>("/echo"); var connection = new Client.Connection("http://foo/echo"); connection.Groups = new List <string> { typeof(MyConnection).FullName + ".test" }; connection.Received += data => { Assert.False(true, "Unexpectedly received data"); }; var transport = new Client.Transports.LongPollingTransport(host); connection.Start(transport).Wait(); Thread.Sleep(TimeSpan.FromSeconds(5)); connection.Stop(); }
public void DisconnectFiresForPersistentConnectionWhenClientGoesAway() { var host = new MemoryHost(); host.MapConnection <MyConnection>("/echo"); host.Configuration.DisconnectTimeout = TimeSpan.Zero; host.Configuration.HeartBeatInterval = TimeSpan.FromSeconds(5); var connectWh = new ManualResetEventSlim(); var disconnectWh = new ManualResetEventSlim(); host.DependencyResolver.Register(typeof(MyConnection), () => new MyConnection(connectWh, disconnectWh)); var connection = new Client.Connection("http://foo/echo"); // Maximum wait time for disconnect to fire (3 heart beat intervals) var disconnectWait = TimeSpan.FromTicks(host.Configuration.HeartBeatInterval.Ticks * 3); connection.Start(host).Wait(); Assert.True(connectWh.Wait(TimeSpan.FromSeconds(10)), "Connect never fired"); connection.Stop(); Assert.True(disconnectWh.Wait(disconnectWait), "Disconnect never fired"); }