ReturnHelloWord 2023-12-01 18:34 采纳率: 0%
浏览 20
已结题

.Net Core Winfrom 承载SignalR

使用.Net Core 6.0 创建Winfrom程序,在Winfrom中承载SignalR,用Winfrom作为SignalR的服务端,Vue作为客户端调用Winfrom中的SignalR。提供一个Demo

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-12-01 18:34
    关注

    引自强大而免费的微信小程序:皆我百晓生

    以下是一个简单的示例,演示如何在.NET Core WinForms应用程序中承载SignalR服务,并使用Vue作为客户端调用SignalR。

    1. 创建一个新的.NET Core WinForms应用程序项目。你可以使用Visual Studio或者使用命令行创建项目。
    2. 在项目文件中添加对SignalR的NuGet包引用。打开项目文件(.csproj),在<ItemGroup>元素中添加以下代码:
      <PackageReference Include="Microsoft.AspNetCore.SignalR" Version="6.0.0" />
      
    3. Program.cs文件中,添加以下代码来配置和启动SignalR服务:
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.DependencyInjection;
    
    class Program
    {
        static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
    
        static IWebHostBuilder CreateHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureServices((_, services) =>
                {
                    services.AddSignalR();
                })
                .Configure((_, app) =>
                {
                    app.UseRouting();
                    app.UseEndpoints(endpoints =>
                    {
                        endpoints.MapHub<MyHub>("/myhub");
                    });
                });
    }
    

    4.创建一个名为MyHub的新类,继承自Hub类,该类将作为SignalR的中心:

    using Microsoft.AspNetCore.SignalR;
    
    public class MyHub : Hub
    {
        public void SendMessage(string message)
        {
            // 处理来自客户端的消息
            Clients.All.SendAsync("ReceiveMessage", message);
        }
    }
    

    5.在WinForms中添加一个WebBrowser控件。在Form1.cs文件中,添加以下代码来加载Vue的HTML页面,并与SignalR进行通信:

    using System.Windows.Forms;
    
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
    
            webBrowser1.Url = new Uri("path_to_vue_html_file");
            
            var connection = new HubConnectionBuilder()
                .WithUrl("http://localhost:5000/myhub")
                .Build();
            
            connection.On<string>("ReceiveMessage", message =>
            {
                // 处理来自服务端的消息
                MessageBox.Show(message);
            });
            
            connection.StartAsync().GetAwaiter().GetResult();
        }
    }
    

    这是一个简单的示例,演示如何在.NET Core WinForms应用程序中承载SignalR服务,并使用Vue作为客户端调用SignalR。你可以根据你的需求进行扩展和调整。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月2日
  • 修改了问题 12月1日
  • 创建了问题 12月1日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值