From 91a4126e887c68738ca104850f79b9a88110b93d Mon Sep 17 00:00:00 2001 From: chandler <1915724901@qq.com> Date: Wed, 12 Mar 2025 18:12:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20[java]-[mvn]-=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clients/java/wechat-ferry-mvn/pom.xml | 1 + .../ferry/handle/WeChatSocketClient.java | 57 ++++++++++--------- .../src/main/resources/proto/wcf.proto | 6 +- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/clients/java/wechat-ferry-mvn/pom.xml b/clients/java/wechat-ferry-mvn/pom.xml index c6453da..bf2e974 100644 --- a/clients/java/wechat-ferry-mvn/pom.xml +++ b/clients/java/wechat-ferry-mvn/pom.xml @@ -88,6 +88,7 @@ protobuf-java 3.22.2 + net.java.dev.jna jna diff --git a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/handle/WeChatSocketClient.java b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/handle/WeChatSocketClient.java index cb3e19d..615c0b5 100644 --- a/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/handle/WeChatSocketClient.java +++ b/clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/handle/WeChatSocketClient.java @@ -75,6 +75,7 @@ public class WeChatSocketClient { private BlockingQueue msgQ; private final String host; + private final Integer port; public WeChatSocketClient(Integer port, String dllPath) { @@ -120,7 +121,7 @@ public class WeChatSocketClient { public Response sendCmd(Request req) { try { - // 设置超时时间 20s + // 设置发送 20 秒超时 cmdSocket.setSendTimeout(20000); ByteBuffer bb = ByteBuffer.wrap(req.toByteArray()); cmdSocket.send(bb); @@ -138,6 +139,33 @@ public class WeChatSocketClient { } } + private void listenMsg(String url) { + try { + msgSocket = new Pair1Socket(); + msgSocket.dial(url); + // 设置接收 5 秒超时 + msgSocket.setReceiveTimeout(5000); + } catch (Exception e) { + log.error("创建消息 RPC 失败", e); + return; + } + ByteBuffer bb = ByteBuffer.allocate(BUFFER_SIZE); + while (isReceivingMsg) { + try { + long size = msgSocket.receive(bb, true); + WxMsg wxMsg = Response.parseFrom(Arrays.copyOfRange(bb.array(), 0, (int)size)).getWxmsg(); + msgQ.put(wxMsg); + } catch (Exception e) { + // 多半是超时,忽略吧 + } + } + try { + msgSocket.close(); + } catch (Exception e) { + log.error("关闭连接失败", e); + } + } + /** * 当前微信客户端是否登录微信号 * @@ -217,33 +245,6 @@ public class WeChatSocketClient { return false; } - private void listenMsg(String url) { - try { - msgSocket = new Pair1Socket(); - msgSocket.dial(url); - // 设置 2 秒超时 - msgSocket.setReceiveTimeout(2000); - } catch (Exception e) { - log.error("创建消息 RPC 失败", e); - return; - } - ByteBuffer bb = ByteBuffer.allocate(BUFFER_SIZE); - while (isReceivingMsg) { - try { - long size = msgSocket.receive(bb, true); - WxMsg wxMsg = Response.parseFrom(Arrays.copyOfRange(bb.array(), 0, (int)size)).getWxmsg(); - msgQ.put(wxMsg); - } catch (Exception e) { - // 多半是超时,忽略吧 - } - } - try { - msgSocket.close(); - } catch (Exception e) { - log.error("关闭连接失败", e); - } - } - public void enableRecvMsg(int qSize) { if (isReceivingMsg) { return; diff --git a/clients/java/wechat-ferry-mvn/src/main/resources/proto/wcf.proto b/clients/java/wechat-ferry-mvn/src/main/resources/proto/wcf.proto index ae33fc2..8f5a99e 100644 --- a/clients/java/wechat-ferry-mvn/src/main/resources/proto/wcf.proto +++ b/clients/java/wechat-ferry-mvn/src/main/resources/proto/wcf.proto @@ -94,9 +94,9 @@ message WxMsg string content = 7; // 消息内容 string sender = 8; // 消息发送者 string sign = 9; // Sign - string thumb = 10; // 缩略图 - string extra = 11; // 附加内容 - string xml = 12; // 消息 xml + string thumb = 10; // 视频或图片消息的缩略图路径 + string extra = 11; // 附加内容,视频或图片消息的路径 + string xml = 12; // 消息 xml 部分 } message TextMsg