From e5c661c9d5dd92eecd810e6ce11ff67ec38b08f0 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期三, 29 十月 2025 01:28:40 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/ZhiHuiQiCe/FangCangZhiNeng
---
新建文件夹/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs | 99 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 99 insertions(+), 0 deletions(-)
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs"
new file mode 100644
index 0000000..686f7e5
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketHostedService.cs"
@@ -0,0 +1,99 @@
+锘縰sing HslCommunication.Core.IMessage;
+using HslCommunication.WebSocket;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using Org.BouncyCastle.Asn1.Ocsp;
+using SqlSugar.Extensions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.Json;
+using System.Threading.Tasks;
+using WIDESEA_Core.Caches;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core
+{
+ public class WebSocketHostedService : IHostedService
+ {
+ private readonly DBContext _dbContext;
+ private readonly ICacheService _cacheService;
+ private readonly WebSocketServer _webSocketServer;
+
+ public WebSocketHostedService(DBContext dbContext, ICacheService cacheService, WebSocketServer webSocketServer)
+ {
+ _webSocketServer = webSocketServer;
+ _dbContext = dbContext;
+ _cacheService = cacheService;
+ _webSocketServer.OnClientConnected += webSocketServer_OnClientConnected;
+ }
+
+ private void webSocketServer_OnClientConnected(WebSocketSession session)
+ {
+ string MessageInfo = _cacheService.Get("MessageInfo");
+ if (!string.IsNullOrEmpty(MessageInfo))
+ {
+ List<Message>? messages = JsonConvert.DeserializeObject<List<Message>>(MessageInfo);
+ if (messages != null && messages.Count > 0)
+ {
+ foreach (var item in messages)
+ {
+ object obj = new
+ {
+ title = item.MessageGroupBy,
+ name = item.MessageName,
+ message = item.MessageInfo,
+ date = DateTime.Now.ToString(),
+ };
+ //_webSocketServer.PublishAllClientPayload(obj.Serialize());
+ _webSocketServer.SendClientPayload(session, obj.Serialize());
+ }
+ }
+ }
+ }
+
+ public async Task StartAsync(CancellationToken cancellationToken)
+ {
+ WebSocketSession? webSocketSession = _webSocketServer.OnlineSessions.FirstOrDefault(x => x.Url.Contains(App.User.UserName));
+ string MessageInfo = _cacheService.Get("MessageInfo");
+ if (!string.IsNullOrEmpty(MessageInfo))
+ {
+ List<Message>? messages = JsonConvert.DeserializeObject<List<Message>>(MessageInfo);
+ if (messages != null && messages.Count > 0)
+ {
+ foreach (var item in messages)
+ {
+ object obj = new
+ {
+ title = item.MessageGroupBy,
+ name = item.MessageName,
+ message = item.MessageInfo,
+ date = item.Date,
+ };
+ //_webSocketServer.PublishAllClientPayload(obj.Serialize());
+ if (webSocketSession != null)
+ _webSocketServer.SendClientPayload(webSocketSession, obj.Serialize());
+ }
+ }
+ }
+ await Task.CompletedTask;
+ }
+
+ public async Task StopAsync(CancellationToken cancellationToken)
+ {
+ await Task.CompletedTask;
+ }
+
+ public class Message
+ {
+ public int Id { get; set; }
+ public string MessageGroupBy { get; set; }
+ public string MessageName { get; set; }
+ public string MessageInfo { get; set; }
+ public DateTime Date { get; set; }
+ }
+ }
+}
--
Gitblit v1.9.3