|
|
|
@ -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
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
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<byte>(buffer), CancellationToken.None); |
|
|
|
|
if (result.MessageType == WebSocketMessageType.Close) |
|
|
|
|
{ |
|
|
|
|
var buffer = new byte[1024 * 1024 * 5]; |
|
|
|
|
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 |
|
|
|
|
// 关闭处理逻辑 |
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
@ -174,17 +166,17 @@ namespace AksWebBrowser.Common
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
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<byte>(sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None); |
|
|
|
|
await Task.Delay(TimeSpan.FromSeconds(10), CancellationToken.None); //根据需要设置心跳间隔 |
|
|
|
|
await Parame.webSocket.SendAsync(new ArraySegment<byte>(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<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None); |
|
|
|
|
await Parame.webSocket.SendAsync(new ArraySegment<byte>(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) |
|
|
|
|