前言:SignalR是基于.NET平台Web应用的实时消息通讯框架,有人称之为.NET平台的.NodeJS;可用于Web页面聊天,消息推送等功能实现。本文摘取部分代码,利用.NET平台的Parallel功能实现通知消息的并行推送和批量存储。
1. 接收通知消息的Api接口:
MVC 控制器代码:
[HttpPost]
[AllowAnonymous]
public void Notify(Message message)
{
var msgModel = new MessageModel();
msgModel.Notify(message);
}
[HttpPost]
[AllowAnonymous]
public void Notify(List<Message> msgList)
{
var msgModel = new MessageModel();
msgModel.BatchNotify(msgList);
}
2. 通知消息的并行推送:
2.1 批量推送接口
首先调用到Task.Factory.StartNew()方法创建新任务,用BulkCopy()方法将数据批量插入到数据库;然后并行推送消息,因为消息接收人有多个,根据消息接收人的消息实体对象列表,Parallel.ForEach()对每条消息并行推送到Web用户的前端。
/// <summary>
/// 通知单条消息
/// </summary>
/// <param name="msg"></param>
public void Notify(Message msg)
{
List<Message> msgList = new List<Message>();
msgList.Add(msg);
BatchNotify(msgList);
}
/// <summary>
/// 多条消息列表推送
/// </s