小编Jos*_*osh的帖子

如何在asp.net core中使用websockets

我正在尝试开发一个游戏,我将记分牌存储在存储在服务器上(当前在本地主机上)的文本文件中。我正在使用 http get 和 post 调用来与服务器通信并获取和发送我想要的数据。现在我想实现 websockets 以便从服务器向 c# 客户端发送通知。通知只会在控制台上为用户显示一条消息,例如在 mu 情况下,每次将用户添加到记分板时,每次调用 UpdateScoreBoard 方法时,我都想向用户显示一条消息。根据我在网上找到的教程,我已经设法构建了以下代码,谁能让我更清楚我将如何为服务器构建 websocket 以及如何在客户端上初始化 websocket?谢谢

Startup.cs(服务器)

        public void Configure(IApplicationBuilder app, IHostEnvironment env)
        {
          //deleted code

            var webSocketOptions = new WebSocketOptions()
            {
                KeepAliveInterval = TimeSpan.FromSeconds(120),
                ReceiveBufferSize = 4 * 1024
            };


            app.UseWebSockets(webSocketOptions);
        
            app.Use(async (context, next) =>
            {
                if (context.Request.Path == "/ws")
                {
                    if (context.WebSockets.IsWebSocketRequest)
                    {
                        WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
                        await Echo(context, webSocket);
                    }
                    else
                    {
                        context.Response.StatusCode = 400;
                    }
                }
                else
                {
                    await next();
                }

            });
        }

        private …
Run Code Online (Sandbox Code Playgroud)

c# client websocket server asp.net-core

6
推荐指数
2
解决办法
6432
查看次数

如何对需要用户输入的代码进行单元测试 C#

这是我第一次进行单元测试/集成测试,我有一个问题。所以我开始对我的代码做单元测试,但是我有一个方法,它实际上是整个应用程序的逻辑,其中调用了多个方法,并且需要用户输入。我如何测试该方法?方法如下:

  public async Task RunAsync()
    {
      
        var watch = System.Diagnostics.Stopwatch.StartNew();
        var playAgain = 'y';

        do
        {
            var attempts = 1;
            var foundNumber = false;
            while (attempts < 10 && foundNumber == false)
            {
                try
                {
                    var inputNumber = int.Parse(GetInput());

                    if (inputNumber == _randomNumber)
                    {
                        foundNumber = true;
                        OnSuccesfulGuess(watch, attempts);

                    }
                    else if (attempts < 10)
                    {
                        OnWrongGuessWithinAttempts(inputNumber);
                    }
                    else
                    {
                        Console.WriteLine("Oops, maybe next time.");                      
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Please enter a number");
                }

                attempts++;
            }

            playAgain = PlayAgain(playAgain); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net integration-testing unit-testing

0
推荐指数
1
解决办法
2299
查看次数