From 497f8f76746d2b699da23e03e1f3c960e5278cc5 Mon Sep 17 00:00:00 2001 From: lwplvx Date: Fri, 8 Oct 2021 18:11:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/TranslateController.cs | 21 ++++++++++- .../Aurora.Core.Api/ModuleCoreApi.cs | 1 + .../Aurora.Core/Aurora.Core.Api/Startup.cs | 25 +++++++++---- .../Aurora.Core.Api/TranslateRocketHub.cs | 37 +++++++++++++++++++ .../Aurora.Core.Domain/Entities/Rocket.cs | 4 +- .../ApplicationReadonlyDbContext.cs | 1 + .../Aurora.Core.IService/IRocketService.cs | 2 +- .../Aurora.Core.Service/RocketService.cs | 13 ++++++- .../translation-rocket/js/background.js | 19 +++++++--- 9 files changed, 104 insertions(+), 19 deletions(-) create mode 100644 Aurora.Microservices/Aurora.Core/Aurora.Core.Api/TranslateRocketHub.cs diff --git a/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/Controllers/TranslateController.cs b/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/Controllers/TranslateController.cs index 85b2c89..424fcfd 100644 --- a/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/Controllers/TranslateController.cs +++ b/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/Controllers/TranslateController.cs @@ -6,6 +6,7 @@ using Aurora.Core.IService; using Aurora.Core.IService.Dto; using Aurora.Infrastructure.Response; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; namespace Aurora.Core.Api.Controllers @@ -16,12 +17,15 @@ namespace Aurora.Core.Api.Controllers { private readonly ILogger _logger; private readonly IRocketService _rocketService; + private readonly IHubContext _hubContext; public TranslateController(ILogger logger, - IRocketService rocketService) + IRocketService rocketService, + IHubContext hubContext) { _logger = logger; _rocketService = rocketService; + _hubContext = hubContext; } [HttpGet] @@ -42,8 +46,21 @@ namespace Aurora.Core.Api.Controllers /// public async Task> Rocket(RocketDto model) { - var res = await _rocketService.Add(model); + var res = await _rocketService.Rocket(model); + + await _hubContext.Clients.All.SendAsync("rocketWord", model); return res; } + + [HttpGet] + /// + /// biu word + /// + /// + public async Task> Test() + { + await _hubContext.Clients.All.SendAsync("rocketWord", "model"); + return new ResponseModel(new RocketDto()); + } } } diff --git a/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/ModuleCoreApi.cs b/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/ModuleCoreApi.cs index 261cb49..e93baa5 100644 --- a/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/ModuleCoreApi.cs +++ b/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/ModuleCoreApi.cs @@ -28,6 +28,7 @@ namespace Aurora.Core.Api option.UseMySQL(configuration["ReadonlyConnectionStrings:MySql"])); services.AddTransient(); + services.AddTransient(); return services; } diff --git a/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/Startup.cs b/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/Startup.cs index 6cc495e..06b1926 100644 --- a/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/Startup.cs +++ b/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/Startup.cs @@ -41,6 +41,7 @@ namespace Aurora.Core.Api services.AddCommonService(); services.AddModuleCoreApi(Configuration); + services.AddSignalR(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. @@ -65,15 +66,23 @@ namespace Aurora.Core.Api endpoints.MapControllers(); }); // register this service - ServiceEntity serviceEntity = new ServiceEntity + // ServiceEntity serviceEntity = new ServiceEntity + // { + // // IP = NetworkHelper.LocalIPAddress, + // Port = Convert.ToInt32(Configuration["Service:Port"]), + // ServiceName = Configuration["Service:Name"], + // ConsulIP = Configuration["Consul:IP"], + // ConsulPort = Convert.ToInt32(Configuration["Consul:Port"]) + // }; + + // app.RegisterConsul(lifetime, serviceEntity); + + app.UseEndpoints(endpoints => { - // IP = NetworkHelper.LocalIPAddress, - Port = Convert.ToInt32(Configuration["Service:Port"]), - ServiceName = Configuration["Service:Name"], - ConsulIP = Configuration["Consul:IP"], - ConsulPort = Convert.ToInt32(Configuration["Consul:Port"]) - }; - app.RegisterConsul(lifetime, serviceEntity); + endpoints.MapControllers(); + endpoints.MapHub("/hub/TranslateRocketHub"); + }); + } } } diff --git a/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/TranslateRocketHub.cs b/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/TranslateRocketHub.cs new file mode 100644 index 0000000..24c04b9 --- /dev/null +++ b/Aurora.Microservices/Aurora.Core/Aurora.Core.Api/TranslateRocketHub.cs @@ -0,0 +1,37 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.SignalR; +using Microsoft.Extensions.Logging; + +namespace Aurora.Core.Api +{ + public class TranslateRocketHub : Hub + { + private readonly ILogger _logger; + + public TranslateRocketHub(ILogger logger) + { + _logger = logger; + } + /// + /// 客户端连接 + /// + /// + public override async Task OnConnectedAsync() + { + await Groups.AddToGroupAsync(Context.ConnectionId, "SignalR Users"); + await base.OnConnectedAsync(); + } + public override async Task OnDisconnectedAsync(Exception exception) + { + await Groups.RemoveFromGroupAsync(Context.ConnectionId, "SignalR Users"); + await base.OnDisconnectedAsync(exception); + } + + public async Task SendMessage(string word) + { + await Clients.All.SendAsync("rocketWord", word); + } + + } +} \ No newline at end of file diff --git a/Aurora.Microservices/Aurora.Core/Aurora.Core.Domain/Entities/Rocket.cs b/Aurora.Microservices/Aurora.Core/Aurora.Core.Domain/Entities/Rocket.cs index c980bf7..422801e 100644 --- a/Aurora.Microservices/Aurora.Core/Aurora.Core.Domain/Entities/Rocket.cs +++ b/Aurora.Microservices/Aurora.Core/Aurora.Core.Domain/Entities/Rocket.cs @@ -4,9 +4,9 @@ using System.Collections.Generic; namespace Aurora.Core.Domain.Entities { /// - /// 单词,我就用 Rocket 老表示单词 + /// 单词,我就用 Rocket 表示单词 /// - public class Rocket : TenantEntityBase + public class RocketWord : TenantEntityBase { public int CategoryId { get; set; } public string Name { get; set; } diff --git a/Aurora.Microservices/Aurora.Core/Aurora.Core.EntityFramework/ApplicationReadonlyDbContext.cs b/Aurora.Microservices/Aurora.Core/Aurora.Core.EntityFramework/ApplicationReadonlyDbContext.cs index 5f6fa78..2736575 100644 --- a/Aurora.Microservices/Aurora.Core/Aurora.Core.EntityFramework/ApplicationReadonlyDbContext.cs +++ b/Aurora.Microservices/Aurora.Core/Aurora.Core.EntityFramework/ApplicationReadonlyDbContext.cs @@ -34,6 +34,7 @@ namespace Aurora.Core.EntityFramework } public DbSet Categories { get; set; } + public DbSet RocketWords { get; set; } public DbSet Subjects { get; set; } public DbSet Exampapers { get; set; } public DbSet Question { get; set; } diff --git a/Aurora.Microservices/Aurora.Core/Aurora.Core.IService/IRocketService.cs b/Aurora.Microservices/Aurora.Core/Aurora.Core.IService/IRocketService.cs index a0e72f2..032a70c 100644 --- a/Aurora.Microservices/Aurora.Core/Aurora.Core.IService/IRocketService.cs +++ b/Aurora.Microservices/Aurora.Core/Aurora.Core.IService/IRocketService.cs @@ -9,6 +9,6 @@ namespace Aurora.Core.IService public interface IRocketService { Task>> GetList(); - Task> Rocket(RocketDto model); + Task> Rocket(RocketDto model); } } diff --git a/Aurora.Microservices/Aurora.Core/Aurora.Core.Service/RocketService.cs b/Aurora.Microservices/Aurora.Core/Aurora.Core.Service/RocketService.cs index fd632c1..e7a3eaf 100644 --- a/Aurora.Microservices/Aurora.Core/Aurora.Core.Service/RocketService.cs +++ b/Aurora.Microservices/Aurora.Core/Aurora.Core.Service/RocketService.cs @@ -50,12 +50,23 @@ namespace Aurora.Core.Service public async Task> Rocket(RocketDto model) { + #region 保存到数据库 + var entity = _mapper.Map(model); - _dbContext.Categories.Add(entity); + _dbContext.RocketWords.Add(entity); var num = await _dbContext.SaveChangesAsync(); + #endregion + + #region 发送到移动端 + + // 按照用户发送 + // 广播发送 + + #endregion + var dto = _mapper.Map(entity); var res = new ResponseModel(dto); diff --git a/Samples/chrome-plugins/translation-rocket/js/background.js b/Samples/chrome-plugins/translation-rocket/js/background.js index f135ec4..2921fde 100644 --- a/Samples/chrome-plugins/translation-rocket/js/background.js +++ b/Samples/chrome-plugins/translation-rocket/js/background.js @@ -26,15 +26,14 @@ function openUrlCurrentTab(url) { getCurrentTabId((tabId) => { chrome.tabs.update(tabId, { url: url }) }) -} +} function handleStateChange() {} chrome.contextMenus.create({ title: '发射选择的单词:%s', // %s表示选中的文字 contexts: ['selection'], // 只有当选中文字时才会出现此右键菜单 - onclick: function (params) { - + onclick: function (params) { chrome.browserAction.setBadgeText({ text: 'new' }) chrome.browserAction.setBadgeBackgroundColor({ color: [255, 0, 0, 255] }) @@ -43,10 +42,20 @@ chrome.contextMenus.create({ xhr.open( 'GET', // chrome.extension.getURL('/config_resources/config.json'), - 'http://www.luoboit.cn/api/blog/post/query?Page=1&Limit=10', + // 'http://www.luoboit.cn/api/blog/post/query?Page=1&Limit=10', + 'http://localhost:8000/Translate/Test', true, ) + // prepare form data + // let data = new FormData(form) + let data = new FormData() + // set headers + // xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') + // xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest') + + // send request + // xhr.send(data) //访问内部位于config_resources目录下的config.json文件 - xhr.send() + xhr.send() }, }) -- GitLab