예제 #1
0
        public static async Task ConnectToChatBaseTestAsync(string url, CancellationToken cancellationToken = default)
        {
#if NET5_0
            await using var client = new EngineIoClient("socket.io");
#else
            using var client = new EngineIoClient("socket.io");
#endif

            client.MessageReceived   += (_, args) => Console.WriteLine($"MessageReceived: {args.Value}");
            client.ExceptionOccurred += (_, args) => Console.WriteLine($"ExceptionOccurred: {args.Value}");
            client.Opened            += (_, args) => Console.WriteLine($"Opened: {args.Value}");
            client.Closed            += (_, args) => Console.WriteLine($"Closed. Reason: {args.Reason}, Status: {args.Status:G}");

            var results = await client.WaitAllEventsAsync <EventArgs>(async() =>
            {
                Console.WriteLine("# Before OpenAsync");

                await client.OpenAsync(new Uri(url), cancellationToken);

                Console.WriteLine("# Before Delay");

                await Task.Delay(TimeSpan.FromSeconds(2), cancellationToken);

                Console.WriteLine("# Before CloseAsync");

                await client.CloseAsync(cancellationToken);

                Console.WriteLine("# After CloseAsync");
            }, cancellationToken, nameof(client.Opened), nameof(client.Closed));

            Console.WriteLine();
            Console.WriteLine($"WebSocket State: {client.WebSocketClient.Socket.State}");
            Console.WriteLine($"WebSocket CloseStatus: {client.WebSocketClient.Socket.CloseStatus}");
            Console.WriteLine($"WebSocket CloseStatusDescription: {client.WebSocketClient.Socket.CloseStatusDescription}");

            foreach (var pair in results)
            {
                pair.Value.Should().NotBeNull(because: $"Client event(\"{pair.Key}\") did not happen");
            }
        }
예제 #2
0
        private static async Task ConnectToChatBaseTest(string url)
        {
            using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(10));

            await using var client = new EngineIoClient("socket.io");

            client.MessageReceived   += (sender, args) => Console.WriteLine($"MessageReceived: {args.Value}");
            client.ExceptionOccurred += (sender, args) => Console.WriteLine($"ExceptionOccurred: {args.Value}");
            client.Opened            += (sender, args) => Console.WriteLine($"Opened: {args.Value}");
            client.Closed            += (sender, args) => Console.WriteLine($"Closed. Reason: {args.Reason}, Status: {args.Status:G}");

            var results = await client.WaitAllEventsAsync <EventArgs>(async cancellationToken =>
            {
                Console.WriteLine("# Before OpenAsync");

                await client.OpenAsync(new Uri(url), 10);

                Console.WriteLine("# Before Delay");

                await Task.Delay(TimeSpan.FromSeconds(2), cancellationToken);

                Console.WriteLine("# Before CloseAsync");

                await client.CloseAsync(cancellationToken);

                Console.WriteLine("# After CloseAsync");
            }, cancellationTokenSource.Token, nameof(client.Opened), nameof(client.Closed));

            Console.WriteLine();
            Console.WriteLine($"WebSocket State: {client.WebSocketClient.Socket.State}");
            Console.WriteLine($"WebSocket CloseStatus: {client.WebSocketClient.Socket.CloseStatus}");
            Console.WriteLine($"WebSocket CloseStatusDescription: {client.WebSocketClient.Socket.CloseStatusDescription}");

            foreach (var pair in results)
            {
                Assert.IsNotNull(pair.Value, $"Client event(\"{pair.Key}\") did not happen");
            }
        }
예제 #3
0
 private static void ToWebSocketUriBaseTest(string expected, string url, string framework = "engine.io")
 {
     EngineIoClient.ToWebSocketUri(new Uri(url), framework)
     .Should().Be(new Uri(expected));
 }
예제 #4
0
 private static void ToWebSocketUriBaseTest(string expected, string url, string framework = "engine.io")
 {
     Assert.AreEqual(
         new Uri(expected),
         EngineIoClient.ToWebSocketUri(new Uri(url), framework));
 }