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;