SignalR2实时聊天

SignalR2实时聊天

NuGet包中搜索SignalR添加引用
using Microsoft.AspNet.SignalR;

创建OWIN启动类
namespace SignalRChat
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}
创建SignalR Hub类
namespace SignalRChat
{
    public class ChatHub : Hub
    {
        //创建发送消息的方法
        public void Send(string message)
        {
            //将消息发送给所有已连接客户端
            Clients.All.broadcastMessage(message);
            //只给当前调用的客户端发送消息
            Clients.Caller.broadcastMessage(message);
            //给当前调用的客户端以外的客户端发送消息
            Clients.Others.broadcastMessage(message);
            //将消息发送给目标客户端
            Clients.Client(Context.ConnectionId).broadcastMessageGo(message);
            Clients.AllExcept(ConnectionId1,ConnectionId2,...).broadcastMessageGo(message);
            //将消息发送给目标群组的客户端
            Clients.Group(GroupName).groupMessageGo(message);
            //排除指定客户
            Clients.Group(GroupName,ConnectionId1,ConnectionId2,...).groupMessageGo(message);
            //排除调用操作的客户端
            Clients.OthersInGroup(GroupName).groupMessageGo(message);
            //用户标识的指定用户
            Clients.User(userid).broadcastMessage(message);
        }
        //群组没有直接的创建和删除,群组和客户端的关联需要自行保存。
        public void Group(string GroupName)
        {
            //加入组
            Groups.Add(Context.ConnectionId, GroupName);
            //退出组
            Groups.Remove(Context.ConnectionId, GroupName);
        }
        public override Task OnConnected()
        {
            //创建连接时执行
            return base.OnConnected();
        }
        public override Task OnDisconnected(bool stopCalled)
        {
            //客户端断开时执行
            return base.OnDisconnected(stopCalled);
        }
        public override Task OnReconnected()
        {
            //重连时执行
            return base.OnReconnected();
        }
    }
}
创建前端html页面
  • 页面上需要引用signalR.js和signalr/hubs
  • 创建客户端方法以供后端调用
  • 后端调用前端方法时输入对应的参数到前端接收
  • chat.client.方法名字 = function(参数){}
<script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
<script src="signalr/hubs"></script>

// 声明一个代理以引用集线器
var chat = $.connection.chatHub;

// 创建接收消息的方法
chat.client.broadcastMessage = function (message) {
    $("#ShowMessage ul").append(message)
};
$.connection.hub.start().done(function () {
    //启动连接时执行
});

作者:XrPriest

出处:https://www.cnblogs.com/XrPriest/p/12012591.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   XR_priest  阅读(262)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题