NetCore 下集成SignalR并进行分组处理
2017-11-23 10:13
183 查看
Tips:
1、注意跟普通版Net.MVC的前端处理方式不一样,以前可以connection.start()后直接done里面再做逻辑处理,现在不行了
建议做法是在具体的业务Hub里重写OnConnectedAsync事件,来为当前连接ID做分组等处理
2、目前版本只支持了websocket协议,还不支持Comet长连接方式
后台代码:
前端代码需要引入signalr-client.js,可以在Bower包里添加或者在Github上找下
前端关键代码:
注意这个地方注释掉的connection.invoke('AddGroup'),这个地方不能在前台JS里面做分组初始化
前台JS现在也不支持Done方法回调,所以写在了后台OnConnectedAsync方法里
客户端发送方法跟以前的版本不一样:connection.invoke('SendToMessage','Admin','标题','消息提示',2000);
1、注意跟普通版Net.MVC的前端处理方式不一样,以前可以connection.start()后直接done里面再做逻辑处理,现在不行了
建议做法是在具体的业务Hub里重写OnConnectedAsync事件,来为当前连接ID做分组等处理
2、目前版本只支持了websocket协议,还不支持Comet长连接方式
后台代码:
public class MessengerHub : Hub { private readonly IHttpContextAccessor _accessor; public MessengerHub(IHttpContextAccessor accessor) { _accessor = accessor; } //连上之后初始化Group public override async Task OnConnectedAsync() { var connectionId = Context.ConnectionId; var userInfo = _accessor.HttpContext.User.Identities.First(u => u.IsAuthenticated); await Task.Run(() => { this.Groups.AddAsync(Context.ConnectionId, _accessor.HttpContext.User.Identity.Name); }); } //给指定Group客户端发送消息 public async Task SendToMessage(string sendTo, string title, string content, int duration = 3000) { var connectionId = Context.ConnectionId; await Task.Run(() => { sendTo.Split(',').ToList().ForEach(t => { this.Clients.Group(t).InvokeAsync("SendToMessage", "", title, content, duration); }); }); } }
前端代码需要引入signalr-client.js,可以在Bower包里添加或者在Github上找下
前端关键代码:
//消息处理 let transportType = signalR.TransportType.WebSockets; let http = new signalR.HttpConnection(`http://${document.location.host}/messengerHub`, { transport: transportType }); let connection = new signalR.HubConnection(http); connection.start(); //setTimeout(connection.invoke('AddGroup'), 5000); connection.on('SendToMessage', (sendTo, title, content, duration) => { layer.open({ type: 1 , time: duration , title: title , offset: 'rb'//具体配置参考:http://www.layui.com/doc/modules/layer.html#offset //, id: 'LAY_demo_rb' //防止重复弹出 , content: '<div id="MessageTips">' + content + '</div>' }); });
注意这个地方注释掉的connection.invoke('AddGroup'),这个地方不能在前台JS里面做分组初始化
前台JS现在也不支持Done方法回调,所以写在了后台OnConnectedAsync方法里
客户端发送方法跟以前的版本不一样:connection.invoke('SendToMessage','Admin','标题','消息提示',2000);
相关文章推荐
- Mysql分组合并函数并进行数据列处理
- ArrayList的group分组后拆分每一个分组进行处理demo
- 使用VS2015进行 SignalR 和 Egret 集成
- mysql GROUP_CONCAT 可以将分组的字段进行拼接处理.
- Java CXF WebService框架 集成Spring3 自定义拦截器进行头验证
- myeclipse连接oracle数据库对emp表进行分页处理
- 小技巧,使用jquery针对已有table进行处理
- 使用宏定义对字符串进行处理#pragma
- 关于spring和mybatis集成后如何进行批处理总结
- 使用 getopt() 进行命令行处理
- 微软采用 Visual Studio 2005 Team System 进行集成软件开发 ---技术案例研究
- JAVA使用EPoll来进行NIO处理的方法(转)
- DataGrid输出到Excel(word)并进行格式化处理(转)
- 使用jenkins配置.net mvc网站进行持续集成一
- MYSQL GROUP BY 对多个字段进行分组
- Flex4 中使用Spring flex 来集成BlazeDS 进行远程调用
- ImageSharp一个专注于NetCore平台图像处理的开源项目
- dom03表单验证及nextElementSibling进行兼容性处理
- PHP给文字内容中的关键字进行套红处理
- VS2010 学习笔记 WF4 (8) 在工作流中进行错误捕捉和处理