From cff562c0f27529c980e4562783fbc95818e08416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=BD=87=E9=98=B3?= Date: Thu, 6 Jun 2024 15:35:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/WebSocketClientWithHeartbeat.cs | 179 +++++++++--------- CPF_Cef/MainModel.cs | 8 +- CPF_Cef/Parame.cs | 1 + 3 files changed, 98 insertions(+), 90 deletions(-) diff --git a/CPF_Cef/Common/WebSocketClientWithHeartbeat.cs b/CPF_Cef/Common/WebSocketClientWithHeartbeat.cs index 25b24b3..427a594 100644 --- a/CPF_Cef/Common/WebSocketClientWithHeartbeat.cs +++ b/CPF_Cef/Common/WebSocketClientWithHeartbeat.cs @@ -28,7 +28,7 @@ namespace AksWebBrowser.Common { _serverUri = Parame.smWebsocket; _webSocket.ConnectAsync(new Uri(_serverUri), CancellationToken.None); - Task.WhenAll(ReceiveMessages(), SendHeartbeats()); + ReceiveMessages(); SendHeartbeats(); } catch (Exception ex) { @@ -42,95 +42,99 @@ namespace AksWebBrowser.Common /// private async Task ReceiveMessages() { - while (_webSocket.State == WebSocketState.Open) + while (true) { - try + if (_webSocket.State == WebSocketState.Open) { - var buffer = new byte[1024 * 1024 * 5]; - var result = await _webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None); - if (result.MessageType == WebSocketMessageType.Close) - { - // 关闭处理逻辑 - await _webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None); - } - else + try { - // 处理接收到的消息逻辑 - string body = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count); - if (!string.IsNullOrEmpty(body)) + var buffer = new byte[1024 * 1024 * 5]; + var result = await _webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None); + if (result.MessageType == WebSocketMessageType.Close) + { + // 关闭处理逻辑 + await _webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None); + } + else { - JObject jo = (JObject)JsonConvert.DeserializeObject(body); - string functionName = jo["functionName"].ToString(); - if (functionName == "LiveDetectResult") + // 处理接收到的消息逻辑 + string body = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count); + if (!string.IsNullOrEmpty(body)) { - string status = string.Empty; - if (body.Contains("success")) + JObject jo = (JObject)JsonConvert.DeserializeObject(body); + string functionName = jo["functionName"].ToString(); + if (functionName == "LiveDetectResult") { - status = jo["success"].ToString(); - } - if (string.IsNullOrEmpty(status)) - { - string nEventId = jo["nEventId"].ToString(); - if (nEventId == "100") + string status = string.Empty; + if (body.Contains("success")) + { + status = jo["success"].ToString(); + } + if (string.IsNullOrEmpty(status)) { - string results = Parame.ImgBase64; - if (!string.IsNullOrEmpty(results)) + string nEventId = jo["nEventId"].ToString(); + if (nEventId == "100") { - JObject jo1 = (JObject)JsonConvert.DeserializeObject(results); - string data = jo1["data"].ToString(); - jo1 = (JObject)JsonConvert.DeserializeObject(data); - string data2 = jo1["Data"].ToString(); - jo1 = (JObject)JsonConvert.DeserializeObject(data2); - string ImageBase64 = jo1["ImageBase64"].ToString(); - //var faceA = "/data/home/aks/aks/wwwroot/TmpFile/faceA.jpg"; - //var faceB = "/data/home/aks/aks/wwwroot/TmpFile/faceB.jpg"; - string faceA = Utils.Base64ByImagesPath(ImageBase64.Replace("data:image/jpg;base64,", ""), ""); - string faceB = Utils.Base64ByImagesPath(jo["ImgBase64"].ToString(), "faceB"); - var mode2 = new + string results = Parame.ImgBase64; + if (!string.IsNullOrEmpty(results)) { - function = "CF_FaceCompare", - filePathA = faceA, - filePathB = faceB - }; - timer.Stop(); - //开始人脸比对 - Send(JsonConvert.SerializeObject(mode2), "CF_FaceCompare"); - } - else - { - timer.Stop(); - results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100101" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}"; - Parame.socket.Send(results); - } + JObject jo1 = (JObject)JsonConvert.DeserializeObject(results); + string data = jo1["data"].ToString(); + jo1 = (JObject)JsonConvert.DeserializeObject(data); + string data2 = jo1["Data"].ToString(); + jo1 = (JObject)JsonConvert.DeserializeObject(data2); + string ImageBase64 = jo1["ImageBase64"].ToString(); + //var faceA = "/data/home/aks/aks/wwwroot/TmpFile/faceA.jpg"; + //var faceB = "/data/home/aks/aks/wwwroot/TmpFile/faceB.jpg"; + string faceA = Utils.Base64ByImagesPath(ImageBase64.Replace("data:image/jpg;base64,", ""), "faceA"); + string faceB = Utils.Base64ByImagesPath(jo["ImgBase64"].ToString(), "faceB"); + var mode2 = new + { + function = "CF_FaceCompare", + filePathA = faceA, + filePathB = faceB + }; + timer.Stop(); + //开始人脸比对 + Send(JsonConvert.SerializeObject(mode2), "CF_FaceCompare"); + } + else + { + timer.Stop(); + results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100101" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}"; + Parame.socket.Send(results); + } + } } } - } - else if (functionName == "CF_FaceCompare") - { - //停止活检 - Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect"); - //关闭摄像头 - Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera"); - string status = jo["success"].ToString(); - string results = string.Empty; - if (status == "0") - { - results = Parame.ImgBase64; - } - else + else if (functionName == "CF_FaceCompare") { - results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100101" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}"; + + //停止活检 + Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect"); + //关闭摄像头 + Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera"); + string status = jo["success"].ToString(); + string results = string.Empty; + if (status == "0") + { + results = Parame.ImgBase64; + } + else + { + results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100101" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}"; + } + timer.Stop(); + Parame.socket.Send(results); } - timer.Stop(); - Parame.socket.Send(results); } } } - } - catch (Exception ex) - { - Log.Error("接收消息双目websockt" + ex.Message); + catch (Exception ex) + { + Log.Error("接收消息双目websockt" + ex.Message); + } } } } @@ -141,19 +145,22 @@ namespace AksWebBrowser.Common /// private async Task SendHeartbeats() { - while (_webSocket.State == WebSocketState.Open) + while (true) { - try - { - // 心跳消息逻辑 - var heartbeat = "{\"function\":\"Heartbeat\"}"; - var sendBuffer = System.Text.Encoding.UTF8.GetBytes(heartbeat); - await _webSocket.SendAsync(new ArraySegment(sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None); - await Task.Delay(TimeSpan.FromSeconds(6), CancellationToken.None); //根据需要设置心跳间隔 - } - catch (Exception ex) + if (_webSocket.State == WebSocketState.Open) { - Log.Error("心跳消息逻辑双目websockt" + ex.Message); + try + { + // 心跳消息逻辑 + var heartbeat = "{\"function\":\"Heartbeat\"}"; + var sendBuffer = System.Text.Encoding.UTF8.GetBytes(heartbeat); + await _webSocket.SendAsync(new ArraySegment(sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None); + await Task.Delay(TimeSpan.FromSeconds(6), CancellationToken.None); //根据需要设置心跳间隔 + } + catch (Exception ex) + { + Log.Error("心跳消息逻辑双目websockt" + ex.Message); + } } } } @@ -175,7 +182,7 @@ namespace AksWebBrowser.Common var buffer = System.Text.Encoding.UTF8.GetBytes(message); await _webSocket.SendAsync(new ArraySegment(buffer), WebSocketMessageType.Text, true, CancellationToken.None); } - if (_funName== "CF_StartLiveDetect") + if (_funName == "CF_StartLiveDetect") { timer.Elapsed += OnTimedEvent; timer.Enabled = true;//启动定时器 @@ -202,7 +209,7 @@ namespace AksWebBrowser.Common string results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100101" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "活体检测超时." + "\"}"; Parame.socket.Send(results); } - catch { } + catch { } finally { } } diff --git a/CPF_Cef/MainModel.cs b/CPF_Cef/MainModel.cs index dd7ce6f..19a5181 100644 --- a/CPF_Cef/MainModel.cs +++ b/CPF_Cef/MainModel.cs @@ -31,7 +31,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser { public class MainModel : CPF.CpfObject { - private static List allSockets; + private static List allSockets; //初始化网络连接 public static void DeviceControllerInit() { @@ -1622,14 +1622,14 @@ namespace AKS.EnterpriseLibrary.WebBrowser { try { - Parame.ImgBase64 = ImageBase64; WebSocketClientWithHeartbeat webSocket = new WebSocketClientWithHeartbeat(); - Task.Delay(800).Wait(); + + Parame.ImgBase64 = ImageBase64; var mode = new { function = "CF_OpenCamera", show = 1, - fx = 100, + fx = 150, fy = 800, fw = 800, fh = 600 diff --git a/CPF_Cef/Parame.cs b/CPF_Cef/Parame.cs index 32db6b5..ca0944c 100644 --- a/CPF_Cef/Parame.cs +++ b/CPF_Cef/Parame.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; +using System.Net.WebSockets; using System.Text; using System.Threading.Tasks;