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 国际」许可协议进行许可。
每一次的记录都是对知识的梳理,只有对反复的梳理自身的知识才能发现自己不足。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律