.Net Core使用WebApi+SignalR实现通信

第一步:创建webapi项目

第二步:浏览NuGet 搜索Microsoft.AspNetCore.SignalR安装

.Net Core使用WebApi+SignalR实现通信_第1张图片

第三步:新建Hub类

using Context.System;
using JTJ.Domin;
using JTJ.Hubs;
using Microsoft.AspNetCore.SignalR;
using System.Linq;

namespace Context.Chat
{
    public class ChatContext : IChatContext
    {
        readonly DBContext _db = new DBContext();

        //注入IHubContext实例
        private readonly IHubContext _hubContext;
        public ChatContext(IHubContext _myHub)
        {
            _hubContext = _myHub;
        }

        public void Send()
        {
            foreach (var item in SystemContext.TokenList)
            {
                var sendName = "TestSendModel/" + item.Value.Username;
                var model = _db.SysUsers.FirstOrDefault(x => x.UserName == item.Value.Username);
                _hubContext.Clients.All.SendAsync(sendName, model);
            }
        }

    }
}

第四步:配置Startup

1.配置ConfigureServices(注意:3.0中跨域不允许“*”,所以必须配置你的web地址)

//跨域
            services.AddCors(options =>
            {
                options.AddPolicy("SignalRCors",
                    policy => policy
                                    .AllowAnyHeader()
                                    .AllowAnyMethod()
                                    .WithOrigins("http://localhost:52000")
                                    .AllowCredentials()); ;
            });
            services.AddSignalR();

2.配置Configure

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            // 跨域配置必须写前面
            app.UseCors("SignalRCors");
            //SignalR
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapHub("/chat");
            });
        }

你可能感兴趣的:(.Net,SignalR)