diff --git a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/deviceManager/screen/AndroidScreenResponseThread.java b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/deviceManager/screen/AndroidScreenResponseThread.java index b7e7fd4..9ebd7b7 100644 --- a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/deviceManager/screen/AndroidScreenResponseThread.java +++ b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/deviceManager/screen/AndroidScreenResponseThread.java @@ -15,6 +15,7 @@ import javax.websocket.Session; import java.io.DataInput; import java.io.IOException; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; public class AndroidScreenResponseThread extends ImageScreenResponse { @@ -109,7 +110,9 @@ public class AndroidScreenResponseThread extends ImageScreenResponse { } //有后端会话则给后端推送屏幕图片 if (!CollectionUtils.isEmpty(webSessions)) { - for (Session webSession : webSessions) { + Iterator iterator = webSessions.iterator(); + while (iterator.hasNext()) { + Session webSession = iterator.next(); if (webSession.isOpen()) { if (sendDeviceStatus) { Map result = new HashMap<>(); @@ -117,12 +120,10 @@ public class AndroidScreenResponseThread extends ImageScreenResponse { SessionUtils.sendMessageInitiative(webSession, ResponseCmd.DEVICE_STATUS, adbDevice.getSerial(), result, "设备连接失败"); sendDeviceStatus = false; } - logger.info("设备【{}】发送图片到微服务:{}张",adbDevice.getSerial(),send++); SessionUtils.sendBinary(webSession, this.lastData); - logger.info("设备【{}】发送图片到微服务完成:{}张",adbDevice.getSerial(),send); } else { logger.warn("推送到web端的session已经断开,sessionId:{}",webSession.getId()); - //todo:操作一下,去掉webSessions里面的无效session + iterator.remove(); } } }