基于SignalR ASP.NET CORE 5.0 做Server,Winform/WPF做Client案例

本文介绍了如何在.NET Core 5.0中使用SignalR实现实时通信。首先展示了创建ChatHub服务端代码,包含`SendMessage`方法用于广播消息。接着说明了客户端的连接配置,包括初始化HubConnection,设置接收消息的回调以及发送消息的方法。重点强调了服务端和客户端的SignalR依赖项必须匹配,否则会导致404错误。并提供了服务端和客户端的NuGet依赖项列表。
摘要由CSDN通过智能技术生成

Server端不再做介绍,可以参照微软Doc文档的SignalR入门教程。

服务端代码
首先创建一个Hub集线器

public class ChatHub : Hub

using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;

namespace DataSystem.Hubs
{
    public class ChatHub : Hub
    {
        public async Task SendMessage(string user, string message)
        {
            await Clients.All.SendAsync("ReceiveMessage", user, message);
        }
        public override Task OnConnectedAsync()
        {
            return base.OnConnectedAsync();
        }
    }
}

.Net Core 5.0 版本的SignalR 路由配置在

 app.UseEndpoints(endpoints =>
 {
    endpoints.MapHub<ChatHub>("/chatHub");

客户端的SignalR初始连接代码

string url = "http://localhost:6163/chatHub";

connection = new HubConnectionBuilder()
	.WithUrl(url)
	.AddMessagePackProtocol()
	.Build();
	
connection.On<string, string>("ReceiveMessage", (user, message) =>
{
	var newMessage = $"[{DateTime.Now.ToString()}]{user}: {message}";
	ShowMsg(newMessage);
});

connection.StartAsync();

connection.InvokeAsync("SendMessage", nametx.Text, "登录服务器");

发送按钮的动作事件

  private void button5_Click(object sender, EventArgs e)
        {
            connection.InvokeAsync("SendMessage", nametx.Text, sendtx.Text);
        }

服务端测试结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210713110235699.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NjNDQ4,size_16,color_FFFFFF,t_70

本案例的重点内容

服务端和客户端采用的SignalR依赖项必须要同一个版本,否则连接将会报404!!
服务端NuGet依赖项:在这里插入图片描述
客户端NuGet依赖项:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值