private async Task WebSocketRequest(AspNetWebSocketContext context)
        {
            var socket = context.WebSocket;

            while (true)
            {
                var buffer = new ArraySegment <byte>(new byte[1024]);

                // Listen to client
                var result = await socket.ReceiveAsync(buffer, CancellationToken.None);

                //If input frame is cancelation frame, send close command.
                if (result.MessageType == WebSocketMessageType.Close)
                {
                    await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
                }
                else
                {
                    var receivedString = Encoding.UTF8.GetString(buffer.ToArray());

                    var builder       = new FormulaBuilder(receivedString);
                    var sendingString = builder.Build();

                    var bytes = Encoding.UTF8.GetBytes(sendingString);

                    await socket.SendAsync(new ArraySegment <byte>(bytes), WebSocketMessageType.Text, true, CancellationToken.None);
                }
            }
        }
Пример #2
0
        public void TestOperationValidation()
        {
            // Arrange
            var input = @"<request><expression><operation>plus</operation><operand><const>20</const></operand><operand>
                        <expression><operation>bla</operation><operand><const>10</const></operand><operand><const>5</const></operand>
                        </expression></operand></expression></request>";
            // Act
            var builder = new FormulaBuilder(input);
            var result  = builder.Build();

            // Assert
            Approvals.Verify(result);
        }
Пример #3
0
        private static void tcpServer_ClientConnected(TcpClient client)
        {
            Console.WriteLine("Client connected: {0}", client.RemoteEndPoint);
            client.Received += (c, r) => Console.WriteLine("← Request received: {0} from client {1}", r, client.RemoteEndPoint);
            client.Sent     += (c, r) => Console.WriteLine("→ Response sent: {0} to client {1}", r, client.RemoteEndPoint);

            while (client.IsConnected)
            {
                var receivedString = client.ReceiveString(Encoding.UTF8);
                if (receivedString.Equals("DisconnectEvent") || string.IsNullOrEmpty(receivedString))
                {
                    client.Disconnect();
                    break;
                }

                var builder       = new FormulaBuilder(receivedString);
                var sendingString = builder.Build();

                client.SendString(sendingString, Encoding.UTF8);
            }
        }