SignalR.Core 消息推送实例
在NuGet 包管理器中搜索 Microsoft.AspNetCore.SignalR 安装,根据项目环境在列表中选择对应的版本安装。目前我的项目的是.net core 的所以选择了 Core版本。
安装成功后在项目中就可以使用了。
public class ChatHub : Hub
{
private string _className = "ChatHub";
//private System.Threading.Timer timer = null;
private System.Threading.Timer _timer = null;
private static readonly object _lock = new object();
/// <summary>
/// 前端接口接收消息的方法名
/// </summary>
private string _receiveMsgmethod = "chatHubReceiveMsg";
/// <summary>
/// 前端接口注册用户的方法名
/// </summary>
private string _registerUserthod = "chatHubRegisterUsert";
/// <summary>
/// 系统消息发送人
/// </summary>
private string _sendUser = "system";
private ITokenHelper _tokenHelper = new TokenHelper();
/// <summary>
/// 当连接成功时执行
/// </summary>
/// <returns></returns>
public override Task OnConnectedAsync()
{
try
{
string connId = Context.ConnectionId;
var tokenobj = Context.GetHttpContext().Request.Query["token"].ToString();
var uid = Context.GetHttpContext().Request.Query["uid"].ToString();
//读取配置文件中 的 秘钥
var secretKey = ConfigManagerHelper.JwtTokenConfig["Secret"];
if (!string.IsNullOrEmpty(tokenobj))
{
//var userId = string.Empty;
//string token = tokenobj.Split(" ")[1].ToString();//剔除Bearer
string mobile = "";//用户手机号
//验证jwt,同时取出来jwt里边的用户ID
//TokenType tokenType = _tokenHelper.ValiTokenState(token, secretKey
// , a => a["iss"] == "test.cn" && a["aud"] == "test"
// , action =>
// {
// userId = action["id"];
// //mobile = action["phone_number"];
// });
var userModel = new OnlineUserModel() {
Token = tokenobj,
F_Id = uid,
ConnectionId = connId,
HubClients = Clients
};
OnlineUserService.Instance.AddOnlineUser(userModel);
/*根据令牌获取用户的信息*/
//{
// await RedisClient.Instance.SetAsync("缓存key-用户标识", this.Context.ConnectionId);
//}
}
//_logger.LogWarning("SignalR已连接");
//验证Token
//var token = _accessor.HttpContext.Request.Query["access_token"];
//var user = JwtHelper.SerializeJwt(token);
//ApiLogQueueService.Instance.AddLog(_className, "OnConnectedAsync", ApiLogType.Warning, ProjectIdEnum.LDApi.GetHashCode(), 200, token, "SignalR已连接,用户名:" + CurrentUserName, string.Empty, 200, 0, CommonHelp.ServiceIp);
//_logger.LogWarning("SignalR已连接,用户名:" + CurrentUserName);
//连接用户 这里可以存在Redis
//var model = new T_sys_userModel
//{
// p_attribute1 = connId
//};
OnlineUserService.Instance.AddClients(connId, Clients);
//var msgModel = new MessageModel()
//{
// SendUserID = connId,
// SendUserName = secretKey,
// Msg = connId + "连接成功,uid:" + uid,
// Type = MessageTypeEnum.System.GetHashCode(),
// City = tokenobj
//};
//Clients.All.SendAsync("chatHubConnectResponse", _sendUser+ "OnConnectedAsync", msgModel);//connId + "连接成功"
TimerSend();
}
catch (Exception ex)
{
ApiLogQueueService.Instance.Enqueue(new ApiLogServiceModel()
{
Search1 = "OnConnectedAsync",
Search2 = string.Empty,
ClassName = _className,
Method = "OnConnectedAsync",
Type = ex == null ? ApiLogType.Common.GetHashCode() : ApiLogType.Error.GetHashCode(),
RequestModel = string.Empty,
ResponseModel = string.Empty,
ElapsedTime = 0,
Code = InterfaceName.ChatHub_SendMessageAsync.GetHashCode(),
InterfaceNameEnum = InterfaceName.ChatHub_SendMessageAsync,
ProjectId = ProjectIdEnum.LDApi.GetHashCode(),
ResultCode = 200,
Remark = ex != null ? string.Format("errorMsg:{0},Exception:{1}", ex.Message, ex.ToString()) : string.Empty,
RowStatus = TrueOrFalseEnum.True.GetHashCode(),
CreatedBy = "system",
CreatedOn = DateTime.Now
});
}
//给当前的连接分组 可以进行同一组接收消息 也可以用Token获取机构权限
//await Groups.AddToGroupAsync(Context.ConnectionId, "测试组");
//给当前连接返回消息 .Clients可以发多个连接ID
//Clients.Client(connId).SendAsync("ConnectResponse",
// new AjaxResultModel<T_sys_userModel>()
// {
// state = 200,
// data = model,
// message = model.p_attribute1 + "连接成功"
// });
return base.OnConnectedAsync();
}
/// <summary>
/// 当连接断开时的处理
/// </summary>
public override Task OnDisconnectedAsync(Exception exception)
{
try
{
//var token = Context.GetHttpContext().Request.Query["token"].ToString();
//var uid = Context.GetHttpContext().Request.Query["uid"].ToString();
//var userModel = OnlineUserService.Instance.GetUserByConnectionId(connId);
string connId = Context.ConnectionId;
OnlineUserService.Instance.RemoveClients(connId);
//if (Clients != null)
//{
// var msg = connId + "断开连接";
// if (userModel != null)
// {
// msg = userModel.F_RealName + "断开连接";
// }
// var msgModel = new MessageModel()
// {
// SendUserID = connId,
// SendUserName = string.Empty,
// Msg = msg + "uid:" + uid,
// Type = MessageTypeEnum.System.GetHashCode(),
// City = token
// };
// Clients.All.SendAsync("chatHubDisconnectResponse", _sendUser, msgModel);
//}
}
catch (Exception ex)
{
ApiLogQueueService.Instance.Enqueue(new ApiLogServiceModel()
{
Search1 = "OnDisconnectedAsync",
Search2 = string.Empty,
ClassName = _className,
Method = "OnDisconnectedAsync",
Type = ex == null ? ApiLogType.Common.GetHashCode() : ApiLogType.Error.GetHashCode(),
RequestModel = string.Empty,
ResponseModel = string.Empty,
ElapsedTime = 0,
Code = InterfaceName.ChatHub_SendMessageAsync.GetHashCode(),
InterfaceNameEnum = InterfaceName.ChatHub_SendMessageAsync,
ProjectId = ProjectIdEnum.LDApi.GetHashCode(),
ResultCode = 200,
Remark = ex != null ? string.Format("errorMsg:{0},Exception:{1}", ex.Message, ex.ToString()) : string.Empty,
RowStatus = TrueOrFalseEnum.True.GetHashCode(),
CreatedBy = "system",
CreatedOn = DateTime.Now
});
}
return base.OnDisconnectedAsync(exception);
}
/// <summary>
/// 定时器
/// </summary>
/// <returns></returns>
private void TimerSend()
{
//System.Threading.Timer t = new System.Threading.Timer(SendMessageAsync, null, 0, 1000);
//if (_timer == null)
//{
// lock (_lock)
// {
// if (_timer == null)
// {
// _timer = new System.Threading.Timer(SendMessageAsync, null, 0, 60000);
// }
// }
//}
}
/// <summary>
/// 发信息 ok
/// </summary>
/// <returns></returns>
private void SendMessageAsync(object a)
{
try
{
var msg = "[" + CommonHelp.ServiceIp + "]系统消息:现在是" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//var task = _hubClients.All.SendAsync("Show", "system", msg);
//var task = hubClients.All.SendAsync(_receiveMsgmethod, "system", msg);
var task = OnlineUserService.Instance.SendPublicMsg(msg, "systemId", "system");
//task.Wait();
//var msg = "系统消息:现在是" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
var task =_hubContext.Clients.All.SendAsync("Show", "system", "系统消息:现在是" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//var task = OnlineUser.Values.All.SendAsync("Show", "system", msg);
//task.Wait();
//if (Clients != null)
//{
// //string userid = Guid.NewGuid().ToString();
// var msg = "系统消息:现在是" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
// //var task =_hubContext.Clients.All.SendAsync("Show", "system", "系统消息:现在是" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// var task = Clients.All.SendAsync("Show", "system", msg);
// task.Wait();
// //var isSucceed = _userLoginLogService.Add(new Admin.Models.Tables.TB_UserLoginLogModel()
// //{
// // F_Id = Guid.NewGuid().ToString("N"),
// // F_ClientIP = msg,
// // F_LoginTime = DateTime.Now,
// // F_LoginType = "登录",
// // F_ServiceType = "登录",
// // F_UserId = "system",
// //});
// //var aa = isSucceed;
//}
}
catch (Exception ex)
{
ApiLogQueueService.Instance.Enqueue(new ApiLogServiceModel()
{
Search1 = "SendMessageAsync",
Search2 = string.Empty,
ClassName = _className,
Method = "SendMessageAsync",
Type = ex == null ? ApiLogType.Common.GetHashCode() : ApiLogType.Error.GetHashCode(),
RequestModel = string.Empty,
ResponseModel = string.Empty,
ElapsedTime = 0,
Code = InterfaceName.ChatHub_SendMessageAsync.GetHashCode(),
InterfaceNameEnum = InterfaceName.ChatHub_SendMessageAsync,
ProjectId = ProjectIdEnum.LDApi.GetHashCode(),
ResultCode = 200,
Remark = ex != null ? string.Format("errorMsg:{0},Exception:{1}", ex.Message, ex.ToString()) : string.Empty,
RowStatus = TrueOrFalseEnum.True.GetHashCode(),
CreatedBy = "system",
CreatedOn = DateTime.Now
});
}
}
/// <summary>
/// 开始计时器 前端调用 invoke
/// </summary>
private void startReminbScheduleTimer()
{
//设置定时间隔(毫秒为单位)
//int interval = 3000;//60000一分钟
//timer = new System.Timers.Timer(interval);
设置执行一次(false)还是一直执行(true)
//timer.AutoReset = true;
设置是否执行System.Timers.Timer.Elapsed事件
//timer.Enabled = true;
绑定Elapsed事件 需要执行的事件
//timer.Elapsed += new System.Timers.ElapsedEventHandler(ReminbSchedule);
//timer.Start();
}
/// <summary>
/// 日程提醒
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//public async void ReminbSchedule(object sender, ElapsedEventArgs e)
public void ReminbSchedule(object sender)
{
try
{
//获取需要此人需要提醒的日程
DateTime StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:00"));
DateTime EndTime = StartTime.AddMinutes(1);
//var taskPublicSendMsg = SendMsg("system", "[" + CommonHelp.ServiceIp + "]系统消息:现在是" + StartTime.ToString("yyyy-MM-dd HH:mm:ss"));
//taskPublicSendMsg.Wait();
var task = OnlineUserService.Instance.SendPublicMsg("[" + CommonHelp.ServiceIp + "]系统消息:现在是" + StartTime.ToString("yyyy-MM-dd HH:mm:ss"), "systemId", "system");
//task.Wait();
//var list = getRemindSchedule(StartTime, EndTime);
if (Type = 1)//1系统消息 2 电子邮件 3 系统弹窗
{
}
var currentuserid = Context.UserIdentifier;
前端 判断Direct类型 为3时时日程提醒
//foreach (var item in list)
//{
// //IpAddress:日程ID Time:(2 天前 · 日历 · 2021年12月28日 16:00 - 2021年12月28日 18:00)
// var timestr = LD.Code.Common.DateStringFromNow(item.RemindTime) + "· 日历 ·" + item.F_StartTime.ToString("yyyy年MM月dd日 HH:00") + " - " + item.F_EndTime.ToString("yyyy年MM月dd日 HH:00");
// var t = Clients.User(CurrentUserId).SendAsync("ReceiveMessage", new MessageModel() { UserID = CurrentUserId, Name = CurrentUserName, Msg = item.F_Title, Direct = 3, IpAddress = item.F_Id, Time = timestr });
// await Task.WhenAll(t);
// //标记为已提醒
// await UpdateRemind(item.ReminbId, item.IsEdit);
//}
}
catch (Exception ex)
{
ApiLogQueueService.Instance.Enqueue(new ApiLogServiceModel()
{
Search1 = "ReminbSchedule",
Search2 = string.Empty,
ClassName = _className,
Method = "ReminbSchedule",
Type = ex == null ? ApiLogType.Common.GetHashCode() : ApiLogType.Error.GetHashCode(),
RequestModel = string.Empty,
ResponseModel = string.Empty,
ElapsedTime = 0,
Code = InterfaceName.ChatHub_ReminbSchedule.GetHashCode(),
InterfaceNameEnum = InterfaceName.ChatHub_ReminbSchedule,
ProjectId = ProjectIdEnum.LDApi.GetHashCode(),
ResultCode = 200,
Remark = ex != null ? string.Format("errorMsg:{0},Exception:{1}", ex.Message, ex.ToString()) : string.Empty,
RowStatus = TrueOrFalseEnum.True.GetHashCode(),
CreatedBy = "system",
CreatedOn = DateTime.Now
});
}
}
/// <summary>
/// 给连接的所有人发送消息
/// </summary>
/// <param name="username"></param>
/// <param name="message"></param>
/// <returns></returns>
//public Task SendMsg(string username, string message)
//{
// //Show方法需要在前端实现
// return Clients.All.SendAsync("Show", username, message);
//}
/// <summary>
/// 公共消息
/// </summary>
/// <param name="message"></param>
/// <param name="sendUserId"></param>
/// <param name="sendUserName"></param>
/// <returns></returns>
public async Task PublicSendMsg(string message, string sendUserId, string sendUserName)
{
// 后期考虑后台管理添加系统通知,这里来查 通知到链接的人
//var hubClients = OnlineUserService.Instance.GetClient();
//if (hubClients != null)
//{
// var t1 = hubClients.All.SendAsync(_receiveMsgmethod, _sendUser, message);//new { Msg = message, Direct = 0 }
// var t2 = this.InsertMessage(0, CurrentUserId, userId, message); ;//添加历史记录
// await Task.WhenAll(t1);//, t2
//}
if (!string.IsNullOrEmpty(message) && !string.IsNullOrEmpty(sendUserId) && !string.IsNullOrEmpty(sendUserName))
{
var t1 = OnlineUserService.Instance.SendPublicMsg(message, sendUserId, sendUserName);
//t1.Wait();
}
}
/// <summary>
/// 发送组消息
/// </summary>
/// <param name="groupId"></param>
/// <param name="message"></param>
/// <param name="sendUserId"></param>
/// <param name="sendUserName"></param>
/// <returns></returns>
public async Task SendGroupMsg(string groupId,string message, string sendUserId, string sendUserName)
{
// 后期考虑后台管理添加系统通知,这里来查 通知到链接的人
if (!string.IsNullOrEmpty(message) && !string.IsNullOrEmpty(sendUserId) && !string.IsNullOrEmpty(sendUserName))
{
var t1 = OnlineUserService.Instance.SendGroupMsg(groupId, message, sendUserId, sendUserName);
//t1.Wait();
}
}
/// <summary>
/// 注册用户消息
/// </summary>
/// <param name="userId"></param>
/// <param name="userName"></param>
/// <param name="connectionId"></param>
/// <returns></returns>
public void RegisterUser(string userId, string userName, string connectionId)
{
try
{
// 后期考虑后台管理添加系统通知,这里来查 通知到链接的人
var hubClients = OnlineUserService.Instance.GetClient();
if (hubClients != null)
{
if (!string.IsNullOrEmpty(userId) && !string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(connectionId))
{
OnlineUserService.Instance.AddOnlineUser(new OnlineUserModel()
{
F_Id = userId,
F_RealName = userName,
ConnectionId = connectionId
});
//userName + "注册成功"
var msgModel = new MessageModel()
{
SendUserID = "systemId",
SendUserName = "system",
Msg = userName + "注册成功",
Type = MessageTypeEnum.System.GetHashCode()
};
hubClients.All.SendAsync(_registerUserthod, "system", msgModel);
}
}
}
catch (Exception ex)
{
//写日志
ApiLogQueueService.Instance.Enqueue(new ApiLogServiceModel()
{
Search1 = "RegisterUser",
Search2 = string.Empty,
ClassName = _className,
Method = "RegisterUser",
Type = ex == null ? ApiLogType.Common.GetHashCode() : ApiLogType.Error.GetHashCode(),
RequestModel = string.Empty,
ResponseModel = string.Empty,
ElapsedTime = 0,
Code = InterfaceName.ChatHub_RegisterUser.GetHashCode(),
InterfaceNameEnum = InterfaceName.ChatHub_RegisterUser,
ProjectId = ProjectIdEnum.LDApi.GetHashCode(),
ResultCode = 200,
Remark = ex != null ? string.Format("errorMsg:{0},Exception:{1}", ex.Message, ex.ToString()) : string.Empty,
RowStatus = TrueOrFalseEnum.True.GetHashCode(),
CreatedBy = "system",
CreatedOn = DateTime.Now
});
}
}
/// <summary>
/// 加入案件组
/// </summary>
/// <param name="lawcaseId"></param>
/// <param name="userId"></param>
/// <returns></returns>
public void JoinGroup(string lawcaseId, string userId)
{
try
{
if (!string.IsNullOrEmpty(userId) && !string.IsNullOrEmpty(lawcaseId))
{
if (lawcaseId.Contains(","))
{
var lawcaseIds = lawcaseId.Split(',').ToList();
foreach (var item in lawcaseIds)
{
if (!string.IsNullOrEmpty(item))
{
OnlineUserService.Instance.JoinGroup(item, userId);//, this.Groups
}
}
}
else
{
OnlineUserService.Instance.JoinGroup(lawcaseId, userId);//, this.Groups
}
}
}
catch (Exception ex)
{
//写日志
ApiLogQueueService.Instance.Enqueue(new ApiLogServiceModel()
{
Search1 = "JoinGroup",
Search2 = string.Empty,
ClassName = _className,
Method = "JoinGroup",
Type = ex == null ? ApiLogType.Common.GetHashCode() : ApiLogType.Error.GetHashCode(),
RequestModel = string.Empty,
ResponseModel = string.Empty,
ElapsedTime = 0,
Code = InterfaceName.ChatHub_RegisterUser.GetHashCode(),
InterfaceNameEnum = InterfaceName.ChatHub_RegisterUser,
ProjectId = ProjectIdEnum.LDApi.GetHashCode(),
ResultCode = 200,
Remark = ex != null ? string.Format("errorMsg:{0},Exception:{1}", ex.Message, ex.ToString()) : string.Empty,
RowStatus = TrueOrFalseEnum.True.GetHashCode(),
CreatedBy = "system",
CreatedOn = DateTime.Now
});
}
}
/// <summary>
/// 加入案件组(批量)
/// </summary>
/// <param name="lawcaseId"></param>
/// <param name="userId"></param>
/// <returns></returns>
//public void JoinGroupBatch(string lawcaseId, string userId)
//{
// try
// {
// if (!string.IsNullOrEmpty(userId) && !string.IsNullOrEmpty(lawcaseId))
// {
// OnlineUserService.Instance.JoinGroup(lawcaseId, userId);//, this.Groups
// }
// }
// catch (Exception ex)
// {
// //写日志
// ApiLogQueueService.Instance.Enqueue(new ApiLogServiceModel()
// {
// Search1 = "JoinGroup",
// Search2 = string.Empty,
// ClassName = _className,
// Method = "JoinGroup",
// Type = ex == null ? ApiLogType.Common.GetHashCode() : ApiLogType.Error.GetHashCode(),
// RequestModel = string.Empty,
// ResponseModel = string.Empty,
// ElapsedTime = 0,
// Code = InterfaceName.ChatHub_RegisterUser.GetHashCode(),
// InterfaceNameEnum = InterfaceName.ChatHub_RegisterUser,
// ProjectId = ProjectIdEnum.LDApi.GetHashCode(),
// ResultCode = 200,
// Remark = ex != null ? string.Format("errorMsg:{0},Exception:{1}", ex.Message, ex.ToString()) : string.Empty,
// RowStatus = TrueOrFalseEnum.True.GetHashCode(),
// CreatedBy = "system",
// CreatedOn = DateTime.Now
// });
// }
//}
/// <summary>
/// 移除案件组
/// </summary>
/// <param name="lawcaseId"></param>
/// <param name="userId"></param>
/// <returns></returns>
public void RemoveGroup(string lawcaseId, string userId)
{
try
{
if (!string.IsNullOrEmpty(userId) && !string.IsNullOrEmpty(lawcaseId))
{
OnlineUserService.Instance.RemoveGroup(lawcaseId, userId);//, this.Groups
}
}
catch (Exception ex)
{
//写日志
ApiLogQueueService.Instance.Enqueue(new ApiLogServiceModel()
{
Search1 = "RemoveGroup",
Search2 = string.Empty,
ClassName = _className,
Method = "RemoveGroup",
Type = ex == null ? ApiLogType.Common.GetHashCode() : ApiLogType.Error.GetHashCode(),
RequestModel = string.Empty,
ResponseModel = string.Empty,
ElapsedTime = 0,
Code = InterfaceName.ChatHub_RegisterUser.GetHashCode(),
InterfaceNameEnum = InterfaceName.ChatHub_RegisterUser,
ProjectId = ProjectIdEnum.LDApi.GetHashCode(),
ResultCode = 200,
Remark = ex != null ? string.Format("errorMsg:{0},Exception:{1}", ex.Message, ex.ToString()) : string.Empty,
RowStatus = TrueOrFalseEnum.True.GetHashCode(),
CreatedBy = "system",
CreatedOn = DateTime.Now
});
}
}
/// <summary>
/// 私聊
/// </summary>
/// <param name="receiveUserId"></param>
/// <param name="message"></param>
/// <param name="sendUserId"></param>
/// <param name="sendUserName"></param>
/// <returns></returns>
//public async Task SendPrivateMsg(string receiveUserId, string message, string sendUserId, string sendUserName)
//{
// var hubClients = OnlineUserService.Instance.GetClient();
// if (hubClients != null && string.IsNullOrEmpty(receiveUserId) && string.IsNullOrEmpty(message))
// {
// var model = OnlineUserService.Instance.GetUserByUserId(receiveUserId);
// if (model != null)
// {
// //var t1 = _hubClients.User(model.ConnectionId).SendAsync(_receiveMsgmethod, new MessageModel() { UserID = sendUserId, Name = sendUserName, Msg = message, Direct = 1 });
// var t2 = model.HubClients.Client(model.ConnectionId).SendAsync(_receiveMsgmethod, sendUserId, message);//new MessageModel() { UserID = sendUserId, Name = sendUserName, Msg = message, Direct = 2 }
// //var t3 = this.InsertMessage(1, CurrentUserId, userId, message);
// //await Task.WhenAll(t1, t2, t3);
// await Task.WhenAll(t2);
// }
// }
//}
/// <summary>
/// 给指定房间内所有用户发消息
/// </summary>
/// <param name="roomid"></param>
/// <param name="message"></param>
/// <returns></returns>
//public async Task SendGroupMessage(string roomid, string message)
//{
// if (_hubClients != null)
// {
// var t1 = _hubClients.Group(roomid).SendAsync("ReceiveGroupMessage", new { UserID = CurrentUserId, Name = CurrentUserName, Msg = message });
// var t2 = this.InsertMessage(2, CurrentUserId, "", message);
// await Task.WhenAll(t1, t2);
// }
//}
}
调用实例
/// <summary>
/// 新建案件事务 提交
/// </summary>
/// <param name="pinfo"></param>
/// <returns></returns>
[HttpPost]
[NoLDAPPLoginFilter]
public AjaxResult SubmitLawcase([FromBody] SubmitLawcaseViewModel pinfo)
{
var sw = new Stopwatch();
sw.Start();
Exception exception = null;
var rspModel = new AjaxResult();
var loginUserId = CurrentUserId;
try
{
var result = _serviceLawcase.SubmitLawcase(loginUserId, pinfo);
if (!result.Item1)
{
return Error(result.Item2);
}
var lawcaseId = result.Item2;
if (pinfo.JoinList != null && pinfo.JoinList.Count > 0)
{
//获取案由
string causename = "";
if(!string.IsNullOrEmpty(pinfo.CauseId))
{
var causeModel = _serviceCause.GetById(pinfo.CauseId);
causename = causeModel.F_Name;
}
else
{
causename = pinfo.InputCause;
}
foreach (var item in pinfo.JoinList)
{
OnlineUserService.Instance.JoinGroup(lawcaseId, item.UserId);
}
//var sendMsg = string.Format("{0}案件创建成功", causeModel != null ? causeModel.F_Name : pinfo.Desc);
var sendMsg = string.Format("{0}案件创建成功", causename);
var task = OnlineUserService.Instance.SendGroupMsg(lawcaseId, sendMsg, loginUserId, CurrentUserName);
//task.Wait();
}
//return Success(lawcaseId);
rspModel.Success(lawcaseId);
}
catch (System.Exception ex)
{
//rspModel.Error("用户登录出错:", ex.Message);
exception = ex;
LogFactory.GetLogger("SubmitLawcase").Info("报错" + ex.Message);
//return Error("新建案件事务 提交报错" + ex.Message);
}
AddLogElapsedTime(InterfaceName.Lawcase_SubmitLawcase, _className, "SubmitLawcase", pinfo, rspModel, rspModel.state, sw, exception, loginUserId);
return rspModel;
}
Startup 中注册
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,
IOptions<SenparcSetting> senparcSetting, IOptions<SenparcWeixinSetting> senparcWeixinSetting)
{ var apiUrlConfig = Configuration.GetSection("ApiUrl").Value;
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await Task.Run(() => { context.Response.Redirect("/index.html"); });
});
endpoints.MapControllers();
//endpoints.MapHub<ServerHub>("/serverHub").RequireCors(t => t.WithOrigins(new string[] { apiUrlConfig }).AllowAnyMethod().AllowAnyHeader().AllowCredentials());
endpoints.MapHub<ChatHub>("/chatHub").RequireCors(t => t.WithOrigins(new string[] { apiUrlConfig }).AllowAnyMethod().AllowAnyHeader().AllowCredentials());
//endpoints.MapHub<ChatHub>("/serverHub").RequireCors(t => t.WithOrigins(new string[] { apiUrlConfig }).AllowAnyMethod().AllowAnyHeader().AllowCredentials());
//endpoints.MapHub<ServerHub>("/serverHub").RequireCors(t => t.WithOrigins(new string[] { apiUrlConfig }).AllowAnyMethod().AllowAnyHeader().AllowCredentials());
});
}