From 6d611bd596f57f0079c36bdb6a7686613f1bbb13 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 04 九月 2023 12:47:15 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/utils/NyHttpUtils.java | 78 +++++++++++++++++---------------------
src/main/java/com/zy/core/thread/NyShuttleThread.java | 25 ++++++++++++
2 files changed, 59 insertions(+), 44 deletions(-)
diff --git a/src/main/java/com/zy/common/utils/NyHttpUtils.java b/src/main/java/com/zy/common/utils/NyHttpUtils.java
index be86a96..3391a79 100644
--- a/src/main/java/com/zy/common/utils/NyHttpUtils.java
+++ b/src/main/java/com/zy/common/utils/NyHttpUtils.java
@@ -16,6 +16,8 @@
*/
public class NyHttpUtils {
+ private static final boolean DEBUG = true;//璋冭瘯妯″紡
+
//鑾峰彇HTTP璇锋眰鏍囧噯缁撴瀯浣�
public static NyShuttleHttpCommand getHttpStandard(Integer shuttleNo, Integer wrkNo) {
NyShuttleHttpCommand httpStandard = new NyShuttleHttpCommand();
@@ -279,54 +281,44 @@
}
//鍙戝嚭璇锋眰
- public static JSONObject requestCommand(Socket socket, NyShuttleHttpCommand httpCommand) {
- try {
- if (socket == null) {
- return null;
- }
- // 鑾峰彇杈撳叆娴佸拰杈撳嚭娴�
- BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream());
- writer.write(JSON.toJSONString(httpCommand) + "\r\n");
- writer.flush();
+ public static JSONObject requestCommand(Socket socket, NyShuttleHttpCommand httpCommand) throws IOException {
+ if (socket == null) {
+ return null;
+ }
+ // 鑾峰彇杈撳叆娴佸拰杈撳嚭娴�
+ BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
+ OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream());
+ writer.write(JSON.toJSONString(httpCommand) + "\r\n");
+ writer.flush();
// System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand));
- // 璇诲彇鏈嶅姟鍣ㄧ殑鍝嶅簲
- StringBuffer sb = new StringBuffer();
- String response = null;
- char[] chars = new char[2048];//缂撳啿鍖�
- do {
- reader.read(chars);
- String trim = new String(chars).trim();
- sb.append(trim);
- if (sb.lastIndexOf("\r\n") != -1) {
- break;
- }
- } while (response != null);
+ // 璇诲彇鏈嶅姟鍣ㄧ殑鍝嶅簲
+ StringBuffer sb = new StringBuffer();
+ String response = null;
+ char[] chars = new char[2048];//缂撳啿鍖�
+ do {
+ reader.read(chars);
+ String trim = new String(chars).trim();
+ sb.append(trim);
+ if (sb.lastIndexOf("\r\n") != -1) {
+ break;
+ }
+ } while (response != null);
// System.out.println("Received response from server: " + sb);
- JSONObject result = JSON.parseObject(sb.toString());//寰楀埌鍝嶅簲缁撴灉闆�
- if (!result.get("msgType").equals("responseMsg")) {//涓嶆槸鍝嶅簲鍐呭
- return null;
- }
-
- JSONObject resultResponse = JSON.parseObject(result.get("response").toString());
- JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString());
- int responseId = Integer.parseInt(resultHeader.get("responseId").toString());
-// if (responseId != httpCommand.getRequest().getHeader().getRequestId()) {
-// return null;//鍝嶅簲ID涓庤姹侷D涓嶄竴鑷�
-// }
-
- return filterBodyData(result);//杩斿洖Body缁撴灉闆�
- } catch (Exception e) {
- e.printStackTrace();
- try {
- socket.close();
- } catch (IOException exception) {
- exception.printStackTrace();
- }
+ JSONObject result = JSON.parseObject(sb.toString());//寰楀埌鍝嶅簲缁撴灉闆�
+ if (!result.get("msgType").equals("responseMsg")) {//涓嶆槸鍝嶅簲鍐呭
+ return null;
}
- return null;
+
+ JSONObject resultResponse = JSON.parseObject(result.get("response").toString());
+ JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString());
+ int responseId = Integer.parseInt(resultHeader.get("responseId").toString());
+ if (!DEBUG && responseId != httpCommand.getRequest().getHeader().getRequestId()) {
+ return null;//鍝嶅簲ID涓庤姹侷D涓嶄竴鑷达紝涓嶅湪璋冭瘯妯″紡涓�
+ }
+
+ return filterBodyData(result);//杩斿洖Body缁撴灉闆�
}
public static JSONObject filterBodyData(JSONObject data) {
diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java
index 54e38f7..ff5a4df 100644
--- a/src/main/java/com/zy/core/thread/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -244,6 +244,14 @@
} catch (Exception e) {
e.printStackTrace();
OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+ try {
+ this.socket.close();
+ this.socket = null;
+ Thread.sleep(1000);
+ this.connect();
+ } catch (IOException | InterruptedException exception) {
+ e.printStackTrace();
+ }
}
}
@@ -254,6 +262,7 @@
socket.setSoTimeout(60000);
socket.setKeepAlive(true);
this.socket = socket;
+ log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
} catch (IOException e) {
OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
}
@@ -283,7 +292,21 @@
}
//鍙戝嚭璇锋眰
- JSONObject result = NyHttpUtils.requestCommand(socket, command);
+ JSONObject result = null;
+ try {
+ result = NyHttpUtils.requestCommand(socket, command);
+ } catch (IOException e) {
+ try {
+ this.socket.close();
+ this.socket = null;
+ Thread.sleep(1000);
+ this.connect();
+ } catch (IOException exception) {
+ exception.printStackTrace();
+ } catch (InterruptedException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
if (result == null) {
return false;//璇锋眰澶辫触
}
--
Gitblit v1.9.1