SignalR在asp.net core下使用
消息即时推送服务,相当于一个微服务, ? 1.初始化 nuget需要安装 Microsoft.AspNetCore.SignalR public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddSignalR(); } public void Configure(IApplicationBuilder app,IHostingEnvironment env,IConferenceService service,IBackgroundJobClient backgroundJobs) { app.UseSignalR(routes => { routes.MapHub<DialogueHub>("/Hub"); //这个定义的Hub就是虚拟出来的服务地址,我们的具体服务文件也会放这个路径 }); } 2.js signalr封装 import n from ‘namespace‘; import * as sg from ‘../../libs/signal/dist/browser/signalr‘; n.namespace(‘cj.signalR‘); cj.signalR = sg; 这个是由于我项目版本用了requirejs做管理,所以使用起来有点绕,不过配置好,还是很稳定的
import n from ‘namespace‘;
n.namespace(‘cj.hub‘);
cj.hub = { }, var data = JSON.parse($(‘#djson‘).val()); if (typeof vm_dialogue === ‘undefined‘) { console.info(‘dialogue‘,data); var connection = new cj.signalR.HubConnectionBuilder().withUrl("/Hub").build(); //监听这个ReceiveMessage方法,这个是后台设置的第一个参数,这里对应名字就好 var userid = $(‘#huserid‘).val(); dias.Items.push(dia); }); $(‘#msg_send‘).click(function (event) { } 看下hub集线器的写法 public class DialogueHub : Microsoft.AspNetCore.SignalR.Hub { /// <summary> /// 根据用户ID发送消息 /// </summary> /// <param name="userid"></param> /// <param name="message"></param> /// <returns></returns> public async Task SendMessageById(string userid,string message) { //具体service通过DI注入得到, var user = _service.UserBackById(Guid.Parse(userid)); DialogueItem item = new DialogueItem(); item.Context = message; item.Id = userid; item.Name = user.Name; item.Logo = user.Logo; await Clients.All.SendAsync("ReceiveMessage",item); //这个对应js的on方法,这个方法可支持10个obj参数 } protected ICacheService _Cache; protected ILogger<DialogueHub> _logger; protected IConferenceService _service; public DialogueHub(ICacheService cache,ILogger<DialogueHub> logger,IConferenceService service ) { _Cache = cache; _logger = logger; _service = service; } } 这样,整个signalR就配置好,可以使用了。 来个截图看下效果 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC4异步和并行执行
- asp.net-mvc – 在创建项目后更改View Engine
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automap
- asp.net-core – AppSettings.*.json文件未在ASP.NET CORE
- asp.net-mvc-3 – 使用ViewModel和html类属性设置的日期格式
- asp.net c#membership:如何做一个GetUsersInRoles(多个角色
- 有没有办法将一个onclick事件添加到ASP.NET标签服务器控件?
- asp.net-mvc-3 – 如何初始化授权信息
- 使用匿名函数减少重复代码
- asp.net-mvc – 删除Id MVC 5
- 在文件系统中获取ASP.NET MVC站点的路径
- asp.net – 如何从HttpResponseMessage获取对象?
- oauth-2.0 – ASP.NET MVC 5中的自定义oAuth客户
- asp.net-mvc – 文件“?/ Views/Position/Edit.c
- asp.net – 防止将父web.config继承到IIS 7.5上的
- asp.net-mvc – 将参数传递给Azure Active Direc
- 重写网址. asp.net c#
- asp.net-mvc-3 – 在ASP.NET MVC3中使用pdf.js.
- 使用Asp.Net Identity 2在AspNetUserClaims中存储
- asp.net – 从wsdl生成webservice