public async Task Should_ignore_empty_manual_checkpoint() { SystemClock.UseRealClock(); var tagListHandler = WithCheckpointStorageService(storageService => new SimulatorBuilder(storageService).Build()); using var svc = CreateCheckpointService(); var wsConnection = new HubConnectionBuilder() .WithUrl($"{svc.ListenUri}/ws/cp") .Build(); var checkpoints = new List <Checkpoint>(); await wsConnection.StartAsync(); await wsConnection.SendCoreAsync("Subscribe", new object[] { DateTime.UtcNow.AddHours(-1) }); wsConnection.On("Checkpoint", (Checkpoint[] cp) => checkpoints.AddRange(cp)); var wsConnected = false; wsConnection.On("ReaderStatus", (ReaderStatus s) => wsConnected = true); await new Timing().ExpectAsync(() => wsConnected); var cli = new HttpClient(); (await cli.PutAsync($"{svc.ListenUri}/cp", new StringContent("\"\"", Encoding.UTF8, "application/json"))).EnsureSuccessStatusCode(); (await new Timing() .Timeout(5000) .Logger(Logger) .WaitAsync(() => checkpoints.Count > 0)).Should().BeFalse(); }
static async Task Main(string[] args) { string baseUrl = "http://localhost:5000/main"; var connection = new HubConnectionBuilder() .WithUrl(baseUrl) .Build(); connection.Closed += async(error) => { await Task.Delay(new Random().Next(0, 5) * 1000); await connection.StartAsync(); }; await connection.StartAsync(); connection.On <string>("Send", Console.WriteLine); await connection.SendCoreAsync("Echo", new object[] { "TEST" }); var reader = await connection.StreamAsChannelAsync <int>("ChannelCounter", 10, 2000); while (await reader.WaitToReadAsync()) { while (reader.TryRead(out var item)) { Console.WriteLine($"received: {item}"); } } }
private static void Main(string[] args) { var connection = new HubConnectionBuilder().WithUrl("https://localhost:44318/msg").Build(); connection.On("ReceiveMessage", (string sender, string message) => Console.WriteLine($"{sender} says: {message}")); connection.Closed += async error => { Console.WriteLine(error); await connection.StartAsync(); }; connection.StartAsync().Wait(); var exitKey = string.Empty; while (true) { var line = Console.ReadLine(); if (line == "/q") { break; } var joinMatch = new Regex("/j (.+)"); if (joinMatch.IsMatch(line)) { var groupName = joinMatch.Match(line).Groups[1].ToString(); // Console.WriteLine("join " + groupName); connection.SendCoreAsync("AddToGroup", new[] { appName, groupName }); continue; } var tellMatch = new Regex("/t ([^ ]+) (.+)"); if (tellMatch.IsMatch(line)) { var groupName = tellMatch.Match(line).Groups[1].ToString(); var message = tellMatch.Match(line).Groups[2].ToString(); connection.SendCoreAsync("SendGroup", new[] { appName, groupName, message }); continue; } connection.SendCoreAsync("Broadcast", new[] { appName, line }); } }
public async Task Should_stream_checkpoints_over_websocket() { SystemClock.UseRealClock(); var tagListHandler = WithCheckpointStorageService(storageService => new SimulatorBuilder(storageService).Build()); using var svc = CreateCheckpointService(); tagListHandler.ReturnOnce(new Tag { TagId = "1" }); tagListHandler.ReturnOnce(new Tag { TagId = "2" }); var wsConnection = new HubConnectionBuilder() .WithUrl($"{svc.ListenUri}/ws/cp") .Build(); var checkpoints = new List <Checkpoint>(); await wsConnection.StartAsync(); await wsConnection.SendCoreAsync("Subscribe", new object[] { DateTime.UtcNow.AddHours(-1) }); wsConnection.On("Checkpoint", (Checkpoint[] cp) => checkpoints.AddRange(cp)); var wsConnected = false; wsConnection.On("ReaderStatus", (ReaderStatus s) => wsConnected = true); await new Timing().ExpectAsync(() => wsConnected); tagListHandler.ReturnOnce(new Tag { TagId = "3" }); tagListHandler.ReturnOnce(new Tag { TagId = "4" }); await new Timing() .Logger(Logger) .FailureDetails(() => $"checkpoints.Count = {checkpoints.Count}") .ExpectAsync(() => checkpoints.Count >= 4); }