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