Browse Source

优化

master
胡超1 1 year ago
parent
commit
cff562c0f2
  1. 179
      CPF_Cef/Common/WebSocketClientWithHeartbeat.cs
  2. 6
      CPF_Cef/MainModel.cs
  3. 1
      CPF_Cef/Parame.cs

179
CPF_Cef/Common/WebSocketClientWithHeartbeat.cs

@ -28,7 +28,7 @@ namespace AksWebBrowser.Common
{ {
_serverUri = Parame.smWebsocket; _serverUri = Parame.smWebsocket;
_webSocket.ConnectAsync(new Uri(_serverUri), CancellationToken.None); _webSocket.ConnectAsync(new Uri(_serverUri), CancellationToken.None);
Task.WhenAll(ReceiveMessages(), SendHeartbeats()); ReceiveMessages(); SendHeartbeats();
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -42,95 +42,99 @@ namespace AksWebBrowser.Common
/// <returns></returns> /// <returns></returns>
private async Task ReceiveMessages() private async Task ReceiveMessages()
{ {
while (_webSocket.State == WebSocketState.Open) while (true)
{ {
try if (_webSocket.State == WebSocketState.Open)
{ {
var buffer = new byte[1024 * 1024 * 5]; try
var result = await _webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
if (result.MessageType == WebSocketMessageType.Close)
{
// 关闭处理逻辑
await _webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
}
else
{ {
// 处理接收到的消息逻辑 var buffer = new byte[1024 * 1024 * 5];
string body = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count); var result = await _webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
if (!string.IsNullOrEmpty(body)) 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(); string body = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);
if (functionName == "LiveDetectResult") if (!string.IsNullOrEmpty(body))
{ {
string status = string.Empty; JObject jo = (JObject)JsonConvert.DeserializeObject(body);
if (body.Contains("success")) string functionName = jo["functionName"].ToString();
if (functionName == "LiveDetectResult")
{ {
status = jo["success"].ToString(); string status = string.Empty;
} if (body.Contains("success"))
if (string.IsNullOrEmpty(status)) {
{ status = jo["success"].ToString();
string nEventId = jo["nEventId"].ToString(); }
if (nEventId == "100") if (string.IsNullOrEmpty(status))
{ {
string results = Parame.ImgBase64; string nEventId = jo["nEventId"].ToString();
if (!string.IsNullOrEmpty(results)) if (nEventId == "100")
{ {
JObject jo1 = (JObject)JsonConvert.DeserializeObject(results); string results = Parame.ImgBase64;
string data = jo1["data"].ToString(); if (!string.IsNullOrEmpty(results))
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
{ {
function = "CF_FaceCompare", JObject jo1 = (JObject)JsonConvert.DeserializeObject(results);
filePathA = faceA, string data = jo1["data"].ToString();
filePathB = faceB jo1 = (JObject)JsonConvert.DeserializeObject(data);
}; string data2 = jo1["Data"].ToString();
timer.Stop(); jo1 = (JObject)JsonConvert.DeserializeObject(data2);
//开始人脸比对 string ImageBase64 = jo1["ImageBase64"].ToString();
Send(JsonConvert.SerializeObject(mode2), "CF_FaceCompare"); //var faceA = "/data/home/aks/aks/wwwroot/TmpFile/faceA.jpg";
} //var faceB = "/data/home/aks/aks/wwwroot/TmpFile/faceB.jpg";
else string faceA = Utils.Base64ByImagesPath(ImageBase64.Replace("data:image/jpg;base64,", ""), "faceA");
{ string faceB = Utils.Base64ByImagesPath(jo["ImgBase64"].ToString(), "faceB");
timer.Stop(); var mode2 = new
results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100101" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}"; {
Parame.socket.Send(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);
}
}
} }
} }
} else if (functionName == "CF_FaceCompare")
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
{ {
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)
catch (Exception ex) {
{ Log.Error("接收消息双目websockt" + ex.Message);
Log.Error("接收消息双目websockt" + ex.Message); }
} }
} }
} }
@ -141,19 +145,22 @@ namespace AksWebBrowser.Common
/// <returns></returns> /// <returns></returns>
private async Task SendHeartbeats() private async Task SendHeartbeats()
{ {
while (_webSocket.State == WebSocketState.Open) while (true)
{ {
try if (_webSocket.State == WebSocketState.Open)
{
// 心跳消息逻辑
var heartbeat = "{\"function\":\"Heartbeat\"}";
var sendBuffer = System.Text.Encoding.UTF8.GetBytes(heartbeat);
await _webSocket.SendAsync(new ArraySegment<byte>(sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None);
await Task.Delay(TimeSpan.FromSeconds(6), CancellationToken.None); //根据需要设置心跳间隔
}
catch (Exception ex)
{ {
Log.Error("心跳消息逻辑双目websockt" + ex.Message); try
{
// 心跳消息逻辑
var heartbeat = "{\"function\":\"Heartbeat\"}";
var sendBuffer = System.Text.Encoding.UTF8.GetBytes(heartbeat);
await _webSocket.SendAsync(new ArraySegment<byte>(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); var buffer = System.Text.Encoding.UTF8.GetBytes(message);
await _webSocket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None); await _webSocket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
} }
if (_funName== "CF_StartLiveDetect") if (_funName == "CF_StartLiveDetect")
{ {
timer.Elapsed += OnTimedEvent; timer.Elapsed += OnTimedEvent;
timer.Enabled = true;//启动定时器 timer.Enabled = true;//启动定时器
@ -202,7 +209,7 @@ namespace AksWebBrowser.Common
string results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100101" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "活体检测超时." + "\"}"; string results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100101" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "活体检测超时." + "\"}";
Parame.socket.Send(results); Parame.socket.Send(results);
} }
catch { } catch { }
finally { } finally { }
} }

6
CPF_Cef/MainModel.cs

@ -1622,14 +1622,14 @@ namespace AKS.EnterpriseLibrary.WebBrowser
{ {
try try
{ {
Parame.ImgBase64 = ImageBase64;
WebSocketClientWithHeartbeat webSocket = new WebSocketClientWithHeartbeat(); WebSocketClientWithHeartbeat webSocket = new WebSocketClientWithHeartbeat();
Task.Delay(800).Wait();
Parame.ImgBase64 = ImageBase64;
var mode = new var mode = new
{ {
function = "CF_OpenCamera", function = "CF_OpenCamera",
show = 1, show = 1,
fx = 100, fx = 150,
fy = 800, fy = 800,
fw = 800, fw = 800,
fh = 600 fh = 600

1
CPF_Cef/Parame.cs

@ -5,6 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Sockets; using System.Net.Sockets;
using System.Net.WebSockets;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;

Loading…
Cancel
Save