EF.NetCore 项目的信息推送(登陆)

这篇博客介绍了如何在EF.NetCore项目中实现信息推送,特别是在登陆场景下。首先在UI层和组件层添加SignalR包,然后创建NotificationHub类。接着在Startup.cs中注入服务和中间件。登陆方法中利用NotificationHub广播、单点和轮播消息。UI层的登陆页面和Index页面通过引用JS和jQuery来接收和显示消息。特别注意中间件注册的命名和页面中websocket的命名需保持一致,以及SendAsync方法中参数的对应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script src="~/lib/Signalr/signalr.js"></script>

1.在UI层和组件层(Componets)中NuGet添加Signalr包(全名:Microsoft.AspNetCore.SignalR.Core)

选择1.0.1版本的就行了。

2.在组件层(Componets)中添加一个NotificationHub.cs类


using Microsoft.AspNetCore.SignalR;
using System;
using System.Threading.Tasks;
 
namespace YouYi.Market.Componets
{
    public class NotificationHub : Hub
    {
        /// <summary>
        /// 建立连接时触发
        /// </summary>
        /// <returns></returns>
        public override async Task OnConnectedAsync()
        {
            //给所有的客户端发送消息     方法名      自己的连接Id
            await Clients.All.SendAsync("ShangXian", Context.ConnectionId);
        }
        /// <summary>
        /// 离开连接时触发
        /// </summary>
        /// <param name="ex"></param>
        /// <returns></returns>
        public override async Task OnDisconnectedAsync(Exception ex)
        {
            //给所有客户端发送消息       方法名    自己的连接Id
            await Clients.All.SendAsync("XiaXian", Context.ConnectionId);
        }
 
        /// <summary>
        /// 向所有人推送消息
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public Task Send(string message)
        {
            return Clients.All.SendAsync("ReceiveMessage", $"{message}");
        }
        /// <summary>
        /// 向指定组推送消息(群消息)
        /// </summary>
        /// <param name="groupName"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public Task SendToGroup(string groupName, string message)
        {
            //                   指定一个组           消息          
            return Clients.Group(groupName).SendAsync("ReceiveMessage", $"{Context.ConnectionId}@{groupName}: {message}");
        }
        /// <summary>
        /// 加入指定组并向组推送消息
        /// </summary>
        /// <param name="groupName"></param>
        /// <returns></returns>
        public async Task JoinGroup(string groupName)
        {
            //添加群里去                  当前用户添加到一个群里去
            await Groups.AddToGroupAsync(Context.ConnectionId, groupName);
            //给群里的人发送一个消息
            await Clients.Group(groupName).SendAsync("ReceiveMessage", $"{Context.ConnectionId} joined {groupName}");
        }
        /// <summary>
        /// 退出指定组并向组推送消息
        /// </summary>
        /// <param name="groupName"></param>
        /// <returns></returns>
        public async Task LeaveGroup(string groupName)
        {
            //退出群
            await Groups.RemoveFromGroupAsync(Context.Conne
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值