在.net核心控制台应用程序中创建websocket服务器

时间:2018-01-19 14:08:16

标签: c# asp.net-core websocket .net-core

有没有办法创建可以托管WebSocket服务器的.NET Core 控制台应用程序?

我看到了许多内容,但仅限于使用ASP.NET Core依赖注入。

我最终使用的Nuget包必须是.NET Core而不是完整的.NET。

如果我可以在控制台应用程序中使用Microsoft.AspNetCore.WebSockets,我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:3)

自托管ASP.net核心应用程序实际上是控制台应用程序,使用Kestrel作为服务器,您可以非阻塞地运行它,并将程序作为常规控制台继续运行,如下所示:

public static void Main(string[] args)
{

    var host = new WebHostBuilder()
        .UseKestrel()
        .Build();                     //Modify the building per your needs

    host.Start();                     //Start server non-blocking

    //Regular console code
    while (true)
    {
        Console.WriteLine(Console.ReadLine());
    }
}

唯一的缺点是你会在开始时得到一些调试信息,但你可以通过这种修改来压制那些:

public static void Main(string[] args)
{

    ConsOut = Console.Out;  //Save the reference to the old out value (The terminal)
    Console.SetOut(new StreamWriter(Stream.Null)); //Remove console output

    var host = new WebHostBuilder()
        .UseKestrel()
        .Build();                     //Modify the building per your needs

    host.Start();                     //Start server non-blocking

    Console.SetOut(ConsOut);          //Restore output

    //Regular console code
    while (true)
    {
        Console.WriteLine(Console.ReadLine());
    }
}

Source about the console output.

答案 1 :(得分:0)

从dotnet core 3.1开始,使用vs代码,在终端dotnet new web中创建一个空的aspnet core项目。使用该模板,您可以在服务器支持下运行控制台应用程序。