NetCore 下集成SignalR并进行分组处理
Tips:
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);
NetCore 下集成SignalR并进行分组处理的更多相关文章
- 在ASP.NET Core下使用SignalR技术
一.前言 上次我们讲到过如何在ASP.NET Core中使用WebSocket,没有阅读过的朋友请参考 WebSocket in ASP.NET Core 文章 .这次的主角是SignalR它为我们提 ...
- signalr中Group 分组群发消息的简单使用
前一段时间写了几篇关于signalr的文章 1.MVC中使用signalR入门教程 2.mvc中signalr实现一对一的聊天 3.Xamarin android中使用signalr实现即时通讯 在平 ...
- NetCore log4net 集成以及配置日志信息不重复显示或者记录
NetCore log4net 集成,这是一个很常见而且网上大批大批的博文了,我写这个博文主要是为了记录我在使用过程中的一点小收获,以前在使用的过程中一直没有注意但是其实网上说的不清不楚的问题. 官方 ...
- .netcore下的微服务、容器、运维、自动化发布
原文:.netcore下的微服务.容器.运维.自动化发布 微服务 1.1 基本概念 1.1.1 什么是微服务? 微服务架构是SOA思想某一种具体实现.是一种将单应用程序作为一套小型 ...
- 用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR]
前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...
- 在Spring下集成ActiveMQ
1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇ActiveMQ入门实例中我们实现了消息的异步传送,这篇博文将如何在spr ...
- 在spring环境下集成ActiveMQ
1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇ActiveMQ入门实例中我们实现了消息的异步传送,这篇博文将如何在spr ...
- asp.net core 2.0集成signalr
在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.NET CORE貌似挺流行的,闲来无事也自己搞了个asp.net cor ...
- 在SSL / https下托管SignalR
https://weblog.west-wind.com/posts/2013/Sep/23/Hosting-SignalR-under-SSLhttps 2013年9月23日•来自毛伊岛,HI• ...
随机推荐
- Neutron二层网络服务实现原理
网络 网络(network)是一个隔离的二层网段,类似于物理网络世界中的虚拟 LAN (VLAN).更具体来讲,它是为创建它的租户而保留的一个广播域,或者被显式配置为共享网段.端口和子网始终被分配 ...
- Roman Numeral Converter
将给定的数字转换成罗马数字. 所有返回的 罗马数字 都应该是大写形式. 这是一些对你有帮助的资源: Roman Numerals Array.splice() Array.indexOf() Arra ...
- rsync技巧
rsync格式: # 拷贝本地文件.当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式.如:rsync -a /data /backup rsync [OPTION]... S ...
- Python模块化
在Python中,一个.py文件就称之为一个模块(Module). 模块化的好处: 1.大大提高了代码的可维护性. 2.编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的 ...
- [置顶]
针对 CoordinatorLayout 及 Behavior 的一次细节较真
我认真不是为了输赢,我就是认真.– 罗永浩 我一直对 Material Design 很感兴趣,每次在官网上阅读它的相关文档时,我总会有更进一步的体会.当然,Material Design 并不是仅仅 ...
- 如何自定义TFS中工作项的字段20141010
如何自定义TFS中工作项的字段 我们以VS2013为例,TFS也是2013版本的: 1. 安装小插件 需要安装Visual Studio Team Foundation Server 2013 Pow ...
- ng-bind 拼接字符标签
- PyQt: “AttributeError: 'Form' object has no attribute 'exec_'” when opening second window
# -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import QApplication , QMainWindow from PyQt5 ...
- [CSAPP笔记]Binary , Unsigned , Signed 之间的相互装换
LaTex+MarkDown+Pandoc组合套件写博客的处女作,试试效果.各自的分工为:Latex下编辑公式,在Sublime Text 2下使用Markdown排版,最后用Pandoc导出. 摘要 ...
- ZOJ3551Bloodsucker (数学期望)
In 0th day, there are n-1 people and 1 bloodsucker. Every day, two and only two of them meet. Nothin ...