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