我正在尝试开发一个游戏,我将记分牌存储在存储在服务器上(当前在本地主机上)的文本文件中。我正在使用 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) 这是我第一次进行单元测试/集成测试,我有一个问题。所以我开始对我的代码做单元测试,但是我有一个方法,它实际上是整个应用程序的逻辑,其中调用了多个方法,并且需要用户输入。我如何测试该方法?方法如下:
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)