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• ...
随机推荐
- socketserver源码简介
一.socketserver流程简介 +------------+ | BaseServer | +------------+ | v +-----------+ +----------------- ...
- 拒绝了对对象 'sp_OACreate' (数据库 'mssqlsystemresource',架构 'sys')的 EXECUTE 权限。
执行一个存储过程, 由于里面使用到了一些 --创建对象 EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT --设置属性 EXEC sp_OASe ...
- SQL基础整理(事务)
事务==流程控制 确保流程只能成功或者失败,若出现错误会自动回到原点 具体的实现代码如下: begin tran insert into student values(') goto tranroll ...
- Vue项目上线后刷新报错404问题(apache,nginx,tomcat)
转自:https://www.cnblogs.com/sxshaolong/p/10219527.html 很简单,需要 服务器端 加个配置文件,然后 重启服务就好了,记住一定要 重启服务,否则无效!
- Linux之LVM设备的管理
LVM可以理解为可扩展的设备:在设备空间不足的时候,保证其在原始数据不变的情况下增大设备的存储大小.那么,要达到这种效果,我们得把可用设备先比变为物理卷,再把物理卷处理为物理卷组,最后成为LVM逻辑卷 ...
- Confluence 安装
一.事前准备 1.jdk安装:5.8.10的jdk至少是7,其中7中还有很多官网是不建议的,这儿选中jdk-7u79 二.安装Confluence 双击atlassian-confluence-5.8 ...
- Device-Dependent Bitmaps (DDB) 设备相关位图
设备相关的位图(DDB)使用单一结构BITMAP结构描述.该结构的成员指定矩形区域的宽度和高度,以像素为单位;将条目从设备调色板映射到像素的数组的宽度;以及器件的颜色格式,在每个像素的颜色平面和位数方 ...
- jquery.treetable.js
html: <table class="table table-hover table-responsive main-list" id="columntabl ...
- TCP 和 UDP 的区别( 面向连接 和 面向无连接 )
第一:TCP 和 UDP 的区别( 面向连接 和 面向无连接 ) TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才 ...
- 【剑指offer】09-3变态跳台阶
原创博文,转载请注明出处! # 本文是牛客网<剑指offer>刷题笔记,笔记索引连接 1.题目 # 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的 ...