CrazyIter_Bin 4 vuotta sitten
vanhempi
commit
66ad381259
2 muutettua tiedostoa jossa 33 lisäystä ja 3 poistoa
  1. 2 2
      TEAMModelOS/Controllers/Client/HiScanController.cs
  2. 31 1
      TEAMModelOS/Startup.cs

+ 2 - 2
TEAMModelOS/Controllers/Client/HiScanController.cs

@@ -80,9 +80,9 @@ namespace TEAMModelOS.Controllers.Core
                 if (!request.TryGetProperty("dev", out JsonElement dev)) return BadRequest();
                 IServerSentEventsClient sseClient;
                 if (Guid.TryParse($"{sid}", out Guid guid) && (sseClient = _sse.GetClient(guid)) != null) {
-                    var clientName = sseClient.GetProperty<string>("NAME");
+                    //var clientName = sseClient.GetProperty<string>("NAME");
                     //var clientDID= sseClient.GetProperty<string>("DID");
-                    var isHiTeach = clientName.Contains("HiScan", StringComparison.OrdinalIgnoreCase);
+                   // var isHiTeach = clientName.Contains("HiScan", StringComparison.OrdinalIgnoreCase);
                     var jwt = new JwtSecurityToken(id_token.GetString());
                     //TODO 此驗證IdToken先簡單檢查,後面需向Core ID新API,驗證Token
                     if (!jwt.Payload.Iss.Equals("account.teammodel", StringComparison.OrdinalIgnoreCase)) return BadRequest();

+ 31 - 1
TEAMModelOS/Startup.cs

@@ -20,12 +20,14 @@ using Microsoft.AspNetCore.SpaServices;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Primitives;
 using Microsoft.IdentityModel.Tokens;
 using TEAMModelOS.Models;
 using TEAMModelOS.SDK;
 using TEAMModelOS.SDK.Context.Attributes.Azure;
 using TEAMModelOS.SDK.Context.Configuration;
 using TEAMModelOS.SDK.DI;
+using TEAMModelOS.SDK.Extension;
 using TEAMModelOS.SDK.Models.Service;
 using VueCliMiddleware;
 
@@ -111,7 +113,35 @@ namespace TEAMModelOS
             //注入word 標籤解析
             string path = $"{ environment.ContentRootPath}/JsonFile/Core";
             services.AddHtexTranslator(path);
-            services.AddServerSentEvents();
+            services.AddServerSentEvents(o =>
+            {
+                o.KeepaliveMode = ServerSentEventsKeepaliveMode.Always;
+                o.OnClientConnected = async (service, client) =>
+                {
+                    //if (client.Request.Headers.TryGetValue("X-Auth-Name", out StringValues name))
+                    //{
+                    //    client.Client.SetProperty("NAME", name.ToString());
+                    //}
+                    //if (client.Request.Headers.TryGetValue("X-Auth-DID", out StringValues did))
+                    //{
+                    //    client.Client.SetProperty("DID", did.ToString());
+                    //}
+                    //if (client.Request.Headers.TryGetValue("X-Auth-CID", out StringValues cid))
+                    //{
+                    //    client.Client.SetProperty("CID", cid.ToString());
+                    //}
+                    //if (client.Request.Headers.TryGetValue("X-Auth-PIN", out StringValues pin))
+                    //{
+                    //    client.Client.SetProperty("PIN", pin.ToString());
+                    //}
+                    //if (client.Request.Headers.TryGetValue("X-Auth-APP", out StringValues app))
+                    //{
+                    //    client.Client.SetProperty("APP", app.ToString());
+                    //}
+
+                    await client.Client.SendEventAsync(new { sid = client.Client.Id.ToString() }.ToJsonString());
+                };
+            });
         }
 
         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.