diff --git a/CPF_Cef/Common/WebSocketClientWithHeartbeat.cs b/CPF_Cef/Common/WebSocketClientWithHeartbeat.cs
index 133c890..05aad34 100644
--- a/CPF_Cef/Common/WebSocketClientWithHeartbeat.cs
+++ b/CPF_Cef/Common/WebSocketClientWithHeartbeat.cs
@@ -29,7 +29,7 @@ namespace AksWebBrowser.Common
{
_serverUri = Parame.smWebsocket;
_webSocket.ConnectAsync(new Uri(_serverUri), CancellationToken.None);
- Task.Delay(200).Wait();
+ Parame.webSocket = _webSocket;
ReceiveMessages();
SendHeartbeats();
}
@@ -45,127 +45,119 @@ namespace AksWebBrowser.Common
///
private async Task ReceiveMessages()
{
- while (isstop)
+ if (Parame.webSocket.State == WebSocketState.Open)
{
- if (_webSocket.State == WebSocketState.Open)
+ try
{
- try
+ var buffer = new byte[1024 * 1024 * 5];
+ var result = await Parame.webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);
+ if (result.MessageType == WebSocketMessageType.Close)
{
- 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
+ // 关闭处理逻辑
+ await Parame.webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
+ }
+ else
+ {
+ // 处理接收到的消息逻辑
+ string body = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);
+ if (!string.IsNullOrEmpty(body) && Parame.socket!=null)
{
- // 处理接收到的消息逻辑
- string body = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);
- if (!string.IsNullOrEmpty(body))
+ JObject jo = (JObject)JsonConvert.DeserializeObject(body);
+ string functionName = jo["functionName"].ToString();
+ if (functionName == "CF_OpenCamera")
{
- JObject jo = (JObject)JsonConvert.DeserializeObject(body);
- string functionName = jo["functionName"].ToString();
- if (functionName == "CF_OpenCamera")
+ string status = jo["success"].ToString();
+ if (status == "0")
{
- string status = jo["success"].ToString();
- if (status == "0")
- {
- //开始活检
- Send("{\"function\":\"CF_StartLiveDetect\"}", "CF_StartLiveDetect");
- }
- else
- {
- timer.Stop();
- // 断开连接
- _webSocket.Dispose();
- isstop = false;
- string commod = "cd /opt/lhtserver/files/bin && nohup ./LhtCamServer.sh &";
- MainModel.Bash(commod);
- Task.Delay(1000).Wait();
- MainModel.StartFace();
- }
+ //开始活检
+ Send("{\"function\":\"CF_StartLiveDetect\"}", "CF_StartLiveDetect");
}
- else if (functionName == "LiveDetectResult")
+ else
{
- Log.Error("LiveDetectResult" + "活检准备");
- string status = string.Empty;
- if (body.Contains("success"))
- {
- status = jo["success"].ToString();
- }
- if (string.IsNullOrEmpty(status))
+ Log.Error("启用异常补偿服务1!");
+ timer.Stop();
+ isstop = false;
+ string commod = "cd /opt/lhtserver/files/bin && nohup ./LhtCamServer.sh &";
+ MainModel.Bash(commod);
+ Task.Delay(200).Wait();
+ MainModel.StartFace();
+ Log.Error("启用成功1!");
+ }
+ }
+ else if (functionName == "LiveDetectResult")
+ {
+ string status = string.Empty;
+ if (body.Contains("success"))
+ {
+ status = jo["success"].ToString();
+ }
+ if (string.IsNullOrEmpty(status))
+ {
+ string nEventId = jo["nEventId"].ToString();
+ if (nEventId == "100")
{
- string nEventId = jo["nEventId"].ToString();
- if (nEventId == "100")
+ string results = Parame.ImgBase64;
+ if (!string.IsNullOrEmpty(results))
{
- string results = Parame.ImgBase64;
- if (!string.IsNullOrEmpty(results))
+ string ImageBase64 = Parame.ImgBase64;
+ string faceA = Utils.Base64ByImagesPath(ImageBase64.Replace("data:image/jpg;base64,", ""), "faceA");
+ string faceB = Utils.Base64ByImagesPath(jo["ImgBase64"].ToString(), "faceB");
+ var mode2 = new
{
- string ImageBase64 = Parame.ImgBase64;
- 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\":\"" + "aks100120" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}";
- Parame.socket.Send(results);
- // 断开连接
- _webSocket.Dispose();
- }
+ function = "CF_FaceCompare",
+ filePathA = faceA,
+ filePathB = faceB
+ };
+ timer.Stop();
+ //开始人脸比对
+ Send(JsonConvert.SerializeObject(mode2), "CF_FaceCompare");
+ }
+ else
+ {
+ timer.Stop();
+ results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100120" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}";
+ Parame.socket.Send(results);
+ isstop = false;
}
}
}
- 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")
{
- Log.Error("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 = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100120" + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "人证合一验证成功." + "\"}";
- }
- else
- {
- results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100120" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}";
- }
- timer.Stop();
- Parame.socket.Send(results);
- // 断开连接
- _webSocket.Dispose();
- isstop = false;
+ results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100120" + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + "人证合一验证成功." + "\"}";
}
- else if (functionName == "VideoStream")
+ else
{
- Log.Error("VideoStream" + "视频返回");
- string VideoBase64 = jo["VideoBase64"].ToString();
- string src = "data:image/jpg;base64," + VideoBase64;
- string results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100121" + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + src + "\"}";
- Parame.socket.Send(results);
+ results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100120" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}";
}
+ timer.Stop();
+ Parame.socket.Send(results);
+ isstop = false;
+ }
+ else if (functionName == "VideoStream")
+ {
+ string VideoBase64 = jo["VideoBase64"].ToString();
+ string src = "data:image/jpg;base64," + VideoBase64;
+ string results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100121" + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + src + "\"}";
+ Parame.socket.Send(results);
}
}
}
- catch (Exception ex)
- {
- Log.Error("接收消息双目websockt" + ex.Message);
- }
+ }
+ catch (Exception ex)
+ {
+ Log.Error("接收消息双目websockt" + ex.Message);
}
}
+
}
///
@@ -174,17 +166,17 @@ namespace AksWebBrowser.Common
///
private async Task SendHeartbeats()
{
- while (isstop)
+ while (true)
{
- if (_webSocket.State == WebSocketState.Open)
+ if (Parame.webSocket.State == WebSocketState.Open)
{
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(10), CancellationToken.None); //根据需要设置心跳间隔
+ await Parame.webSocket.SendAsync(new ArraySegment(sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None);
+ await Task.Delay(10000); //根据需要设置心跳间隔
}
catch (Exception ex)
{
@@ -205,11 +197,11 @@ namespace AksWebBrowser.Common
{
funName = _funName;
Parame.messageData = string.Empty;
- if (_webSocket.State == WebSocketState.Open)
+ if (Parame.webSocket.State == WebSocketState.Open)
{
// 发送消息到服务器
var buffer = System.Text.Encoding.UTF8.GetBytes(message);
- await _webSocket.SendAsync(new ArraySegment(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
+ await Parame.webSocket.SendAsync(new ArraySegment(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
}
if (_funName == "CF_StartLiveDetect")
{
@@ -235,8 +227,6 @@ namespace AksWebBrowser.Common
Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera");
string results = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "aks100120" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "活体检测超时." + "\"}";
Parame.socket.Send(results);
- // 断开连接
- _webSocket.Dispose();
isstop = false;
}
catch { }
@@ -251,10 +241,10 @@ namespace AksWebBrowser.Common
{
try
{
- if (_webSocket.State == WebSocketState.Open)
+ if (Parame.webSocket.State == WebSocketState.Open)
{
isstop = false;
- await _webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
+ await Parame.webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
}
}
catch (Exception ex)
diff --git a/CPF_Cef/FrmMain.cs b/CPF_Cef/FrmMain.cs
index b07577a..f15548d 100644
--- a/CPF_Cef/FrmMain.cs
+++ b/CPF_Cef/FrmMain.cs
@@ -35,8 +35,8 @@ namespace AksWebBrowser
Title = "控申业务专用浏览器";
CanResize = false;
ShowInTaskbar = true;
- //WindowState = WindowState.FullScreen;
- WindowState = WindowState.Maximized;
+ WindowState = WindowState.FullScreen;
+ //WindowState = WindowState.Maximized;
Children.Add(
new Border
@@ -107,6 +107,8 @@ namespace AksWebBrowser
showDev = true;
Parame.webBrowser.ShowDev();
}
+ //WebSocketClientWithHeartbeat webSocket = new WebSocketClientWithHeartbeat();
+ //Parame.webSocket2 = webSocket;
//获取授权
GetSQObject();
////获取设备
diff --git a/CPF_Cef/MainModel.cs b/CPF_Cef/MainModel.cs
index beb59dd..6b370d9 100644
--- a/CPF_Cef/MainModel.cs
+++ b/CPF_Cef/MainModel.cs
@@ -2,6 +2,7 @@
using AksWebBrowser.Devices;
using AKSWebBrowser.Commen;
using CPF.Cef;
+using CPF.Windows;
using Fleck;
using LibVLCSharp.Shared;
using Newtonsoft.Json;
@@ -177,6 +178,10 @@ namespace AksWebBrowser
case "aks100119":
result = ReadByBody();
break;
+ //{"code":"aks100123",faceA:"base64",faceB:"base64"}
+ case "aks100123":
+ result = FaseByImage(content);
+ break;
default:
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "" + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"data\":\"无效指令\"}";
break;
@@ -1653,6 +1658,41 @@ namespace AksWebBrowser
}
return "";
}
+ ///
+ /// base转文件
+ ///
+ ///
+ public static string FaseByImage(string content)
+ {
+ try
+ {
+ var param = content.ConvertToAnonymousType(new
+ {
+ code = default(string),
+ faceA = default(string),
+ faceB = default(string)
+ });
+ if (param == null)
+ {
+ return "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "" + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"data\":\"" + "参数解析错误" + "\"}";
+ }
+ string faceA = Utils.Base64ByImagesPath(param.faceA, "faceA");
+ string faceB = Utils.Base64ByImagesPath(param.faceB, "faceB");
+ var mode2 = new
+ {
+ filePathA = faceA,
+ filePathB = faceB
+ };
+ return "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":\"" + JsonConvert.SerializeObject(mode2) + "\"}";
+ }
+ catch (Exception ex)
+ {
+ //Log.Error("执行文件异常:" + ex.Message);
+ return "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + "" + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}";
+ }
+ }
+
+
///
/// 高拍仪
@@ -1784,7 +1824,6 @@ namespace AksWebBrowser
{
try
{
- WebSocketClientWithHeartbeat webSocket = new WebSocketClientWithHeartbeat();
var mode = new
{
function = "CF_OpenCamera",
@@ -1795,7 +1834,7 @@ namespace AksWebBrowser
fh = 600
};
//打开摄像头
- webSocket.Send(JsonConvert.SerializeObject(mode), "CF_OpenCamera");
+ Parame.webSocket2.Send(JsonConvert.SerializeObject(mode), "CF_OpenCamera");
}
catch (Exception ex)
{
diff --git a/CPF_Cef/Parame.cs b/CPF_Cef/Parame.cs
index 08346f5..d2b1f84 100644
--- a/CPF_Cef/Parame.cs
+++ b/CPF_Cef/Parame.cs
@@ -1,4 +1,5 @@
using AksWebBrowser;
+using AksWebBrowser.Common;
using CPF.Controls;
using Fleck;
using System;
@@ -17,6 +18,8 @@ namespace AksWebBrowser
public static TcpClient tcpClient { get; set; }
public static CusWebBrowser webBrowser { get; set; }
public static Window frm { get; set; }
+ public static ClientWebSocket webSocket { get; set; }
+ public static WebSocketClientWithHeartbeat webSocket2 { get; set; }
public static List FuncObject { get; set; }
//接口地址
public static string apiUrl = "http://192.168.0.234:8098";//"http://143.169.62.3:8098";//
@@ -31,7 +34,7 @@ namespace AksWebBrowser
//高拍仪devIndex
public static string gpydevIndex = "0";
//签字版、指纹、身份证
- public static string signUrl = "http://127.0.0.1:9399/device";
+ public static string signUrl = "http://192.168.0.234:9399/device";
//请求超时
public static int timeout = 3000;
//票据打印机
@@ -47,7 +50,7 @@ namespace AksWebBrowser
//是否关闭授权定时请求
public static bool isCloseHttp = false;
//双目摄像头
- public static string smWebsocket = "ws://127.0.0.1:22226";
+ public static string smWebsocket = "ws://192.168.0.234:22226";
//消息推送
public static string messageData { get; set; }
//人脸比对阈值