Skip to content
This repository was archived by the owner on Oct 14, 2021. It is now read-only.

Commit 646924f

Browse files
committed
添加log,添加接收信息回调
1 parent 37c85eb commit 646924f

32 files changed

+1077
-794
lines changed

pom.xml

-10
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,6 @@
2828
</dependency>
2929

3030
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
31-
<dependency>
32-
<groupId>org.slf4j</groupId>
33-
<artifactId>slf4j-api</artifactId>
34-
<version>1.6.6</version>
35-
</dependency>
36-
<dependency>
37-
<groupId>org.slf4j</groupId>
38-
<artifactId>slf4j-log4j12</artifactId>
39-
<version>1.6.6</version>
40-
</dependency>
4131
<dependency>
4232
<groupId>log4j</groupId>
4333
<artifactId>log4j</artifactId>

src/main/java/com/chiho/itchat4java/Client.java src/main/java/com/chiho/itchat/shell/Client.java

+11-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.chiho.itchat4java;
1+
package com.chiho.itchat.shell;
22

3-
import com.chiho.itchat4java.interfaces.Callback;
3+
import com.chiho.itchat.shell.interfaces.Callback;
44
import java.io.BufferedReader;
55
import java.io.IOException;
66
import java.io.InputStream;
@@ -10,10 +10,12 @@
1010
import java.net.InetSocketAddress;
1111
import java.net.Socket;
1212
import java.util.Date;
13+
import org.apache.log4j.Logger;
1314

1415

1516
public class Client {
1617

18+
private final Logger logger = Logger.getLogger(Client.class);
1719
private String serverIp;
1820
private int port;
1921
private Socket socket;
@@ -65,8 +67,7 @@ private boolean connect() {
6567
Client.this.stop();
6668
}
6769
socket = new Socket();
68-
System.out.println("Client - Begin to connect");
69-
System.out.println("Socket has been closed!");
70+
logger.info("Client - Begin to connect");
7071
try {
7172
socket.connect(new InetSocketAddress(serverIp, port), 3000);
7273
} catch (Exception e) {
@@ -97,12 +98,12 @@ public boolean sendString( final String string ) {
9798
try {
9899
os = socket.getOutputStream();
99100
PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
100-
System.out.println("The sending data is: " + string);
101+
logger.debug("The sending data is: " + string);
101102
pw.write(string + "\r\n");
102103
pw.flush();
103104

104105
} catch (IOException e) {
105-
System.out.println("Error sending data!");
106+
logger.error("Error sending data!");
106107
e.printStackTrace();
107108
Client.this.stop();
108109
return false;
@@ -149,8 +150,9 @@ public void run() {
149150
bufferedReader = new BufferedReader(new InputStreamReader(in));
150151
String string;
151152
while ( ( string = bufferedReader.readLine() ) != null ) {
152-
System.out.println("The receiving data is: " + string);
153-
receiveCallback.call(string);
153+
logger.debug("The receiving data is: " + string);
154+
final String resp = string;
155+
new Thread(() -> receiveCallback.call(resp)).start();
154156
}
155157
} else {
156158
try {
@@ -163,7 +165,7 @@ public void run() {
163165
Thread.sleep(10);
164166
}
165167
} catch (Exception e) {
166-
System.out.println("Error receiving data!");
168+
logger.error("Error receiving data!");
167169
e.printStackTrace();
168170
Client.this.stop();
169171
}

src/main/java/com/chiho/itchat4java/Server.java src/main/java/com/chiho/itchat/shell/Server.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
1-
package com.chiho.itchat4java;
1+
package com.chiho.itchat.shell;
22

33
import java.io.BufferedReader;
44
import java.io.File;
55
import java.io.IOException;
66
import java.io.InputStream;
77
import java.io.InputStreamReader;
8+
import org.apache.log4j.Logger;
9+
import org.apache.log4j.spi.LoggerFactory;
810

911
public class Server {
1012

13+
private final Logger logger = Logger.getLogger(Server.class.toString());
1114
private String scriptPath = "src/main/resources/pyserver.py";
1215
private Process pyProcess;
1316

@@ -52,14 +55,14 @@ public void run() {
5255
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
5356
String string;
5457
while ( ( string = bufferedReader.readLine() ) != null ) {
55-
System.out.println(string);
58+
logger.debug(string);
5659
}
5760
} else {
5861
BufferedReader errorReader = new BufferedReader(new InputStreamReader(pyProcess.getErrorStream()));
5962
String string;
6063
if ( errorReader.ready() ) {
6164
while ( ( string = errorReader.readLine() ) != null ) {
62-
System.out.println(string);
65+
logger.error(string);
6366
}
6467
}
6568
}

src/main/java/com/chiho/itchat4java/Shell.java src/main/java/com/chiho/itchat/shell/Shell.java

+67-39
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
1-
package com.chiho.itchat4java;
1+
package com.chiho.itchat.shell;
22

33
import com.alibaba.fastjson.JSON;
44
import com.alibaba.fastjson.JSONException;
55
import com.alibaba.fastjson.JSONObject;
6-
import com.chiho.itchat4java.enums.AddFriendStatusEnum;
7-
import com.chiho.itchat4java.enums.CmdTypeEnum;
8-
import com.chiho.itchat4java.exceptions.ItChatException;
9-
import com.chiho.itchat4java.interfaces.Callback;
10-
import com.chiho.itchat4java.model.ContactDO;
11-
import com.chiho.itchat4java.model.CreateChatroomDO;
12-
import com.chiho.itchat4java.model.HeadImgDO;
13-
import com.chiho.itchat4java.model.MessageDO;
14-
import com.chiho.itchat4java.model.ModifyChatroomDO;
15-
import com.chiho.itchat4java.model.MsgDO;
16-
import com.chiho.itchat4java.model.QrCodeDO;
17-
import com.chiho.itchat4java.model.RevokeDO;
18-
import com.chiho.itchat4java.model.ShowMobileLoginDO;
19-
import com.chiho.itchat4java.model.StatusResponseDO;
20-
import com.chiho.itchat4java.model.UploadFileDO;
21-
import com.chiho.itchat4java.model.WebInitDO;
6+
import com.chiho.itchat.shell.enums.CmdTypeEnum;
7+
import com.chiho.itchat.shell.enums.MessageTypeEnum;
8+
import com.chiho.itchat.shell.model.ContactDO;
9+
import com.chiho.itchat.shell.model.GroupMessageDO;
10+
import com.chiho.itchat.shell.model.MessageDO;
11+
import com.chiho.itchat.shell.model.WebInitDO;
12+
import com.chiho.itchat.shell.enums.AddFriendStatusEnum;
13+
import com.chiho.itchat.shell.exceptions.ItChatException;
14+
import com.chiho.itchat.shell.interfaces.Callback;
15+
import com.chiho.itchat.shell.model.CreateChatroomDO;
16+
import com.chiho.itchat.shell.model.FetchMessageDO;
17+
import com.chiho.itchat.shell.model.HeadImgDO;
18+
import com.chiho.itchat.shell.model.SendMsgDO;
19+
import com.chiho.itchat.shell.model.ModifyChatroomDO;
20+
import com.chiho.itchat.shell.model.QrCodeDO;
21+
import com.chiho.itchat.shell.model.RevokeDO;
22+
import com.chiho.itchat.shell.model.ShowMobileLoginDO;
23+
import com.chiho.itchat.shell.model.StatusResponseDO;
24+
import com.chiho.itchat.shell.model.UploadFileDO;
2225
import com.sun.istack.internal.NotNull;
2326
import java.io.File;
2427
import java.util.ArrayList;
@@ -129,6 +132,7 @@ private final Object sendRequest( CmdTypeEnum cmd, Pair<String, String>... args
129132
});
130133
client.sendString(message);
131134
semaphore.acquire();
135+
132136
callbackMapper.remove(cmd.getType());
133137
if ( respObj[ 0 ] instanceof StatusResponseDO ) {
134138
StatusResponseDO statusResponseDO = (StatusResponseDO)respObj[ 0 ];
@@ -143,6 +147,15 @@ private final Object sendRequest( CmdTypeEnum cmd, Pair<String, String>... args
143147
}
144148
}
145149

150+
/**
151+
* get itchat is alive
152+
*
153+
* @return isAlive
154+
*/
155+
public Boolean isAlive() throws ItChatException {
156+
return (Boolean)sendRequest(CmdTypeEnum.IS_ALIVE);
157+
}
158+
146159
/**
147160
* log in like web wechat does
148161
*
@@ -168,19 +181,19 @@ public void login( Boolean enableCmdQR, String picDir, Callback<QrCodeDO> qrCall
168181
"u'" + new File("src/main/resources/QR.png").getAbsolutePath() + "'"));
169182
}
170183
if ( qrCallback != null ) {
171-
callbackMapper.put("login_qrCallback", param -> qrCallback.call((QrCodeDO)param));
184+
callbackMapper.put(CmdTypeEnum.LOGIN_QRCALLBACK.getType(), param -> qrCallback.call((QrCodeDO)param));
172185
pairs.add(new Pair<>("qrCallback", "login_qrCallback"));
173186
} else {
174187
callbackMapper.remove("login_qrCallback");
175188
}
176189
if ( loginCallback != null ) {
177-
callbackMapper.put("login_loginCallback", param -> loginCallback.run());
190+
callbackMapper.put(CmdTypeEnum.LOGIN_LOGINCALLBACK.getType(), param -> loginCallback.run());
178191
pairs.add(new Pair<>("loginCallback", "login_loginCallback"));
179192
} else {
180193
callbackMapper.remove("login_loginCallback");
181194
}
182195
if ( exitCallback != null ) {
183-
callbackMapper.put("login_exitCallback", param -> exitCallback.run());
196+
callbackMapper.put(CmdTypeEnum.LOGIN_EXITCALLBACK.getType(), param -> exitCallback.run());
184197
pairs.add(new Pair<>("exitCallback", "login_exitCallback"));
185198
} else {
186199
callbackMapper.remove("login_exitCallback");
@@ -233,7 +246,7 @@ public String getQR( String uuid, Boolean enableCmdQR, String picDir, Callback<Q
233246
"u'" + new File("src/main/resources/QR.png").getAbsolutePath() + "'"));
234247
}
235248
if ( qrCallback != null ) {
236-
callbackMapper.put("login_qrCallback", param -> qrCallback.call((QrCodeDO)param));
249+
callbackMapper.put(CmdTypeEnum.LOGIN_QRCALLBACK.getType(), param -> qrCallback.call((QrCodeDO)param));
237250
pairs.add(new Pair<>("qrCallback", "login_qrCallback"));
238251
} else {
239252
callbackMapper.remove("login_qrCallback");
@@ -302,7 +315,7 @@ public ShowMobileLoginDO showMobileLogin() throws ItChatException {
302315
public void startReceiving( Runnable exitCallback ) throws ItChatException {
303316
List<Pair> pairs = new ArrayList<>();
304317
if ( exitCallback != null ) {
305-
callbackMapper.put("startReceiving_exitCallback", param -> exitCallback.run());
318+
callbackMapper.put(CmdTypeEnum.STARTRECEIVING_EXITCALLBACK.getType(), param -> exitCallback.run());
306319
pairs.add(new Pair<>("exitCallback", "startReceiving_exitCallback"));
307320
} else {
308321
callbackMapper.remove("startReceiving_exitCallback");
@@ -325,8 +338,8 @@ public void startReceiving( Runnable exitCallback ) throws ItChatException {
325338
*
326339
* @return return
327340
*/
328-
public MsgDO getMsg() throws ItChatException {
329-
return (MsgDO)sendRequest(CmdTypeEnum.GET_MSG);
341+
public FetchMessageDO getMsg() throws ItChatException {
342+
return (FetchMessageDO)sendRequest(CmdTypeEnum.GET_MSG);
330343
}
331344

332345
/**
@@ -689,15 +702,15 @@ public ModifyChatroomDO addMemberIntoChatroom( @NotNull String chatroomUserName,
689702
*
690703
* @return return
691704
*/
692-
public MessageDO sendMsg( String msg, @NotNull String toUserName ) throws ItChatException {
705+
public SendMsgDO sendMsg( String msg, @NotNull String toUserName ) throws ItChatException {
693706
List<Pair> pairs = new ArrayList<>();
694707
if ( msg != null ) {
695708
pairs.add(new Pair<>("msg", "u'" + msg + "'"));
696709
}
697710
if ( toUserName != null ) {
698711
pairs.add(new Pair<>("toUserName", "u'" + toUserName + "'"));
699712
}
700-
return (MessageDO)sendRequest(CmdTypeEnum.SEND_MSG, pairs.toArray(new Pair[ 0 ]));
713+
return (SendMsgDO)sendRequest(CmdTypeEnum.SEND_MSG, pairs.toArray(new Pair[ 0 ]));
701714
}
702715

703716
/**
@@ -737,7 +750,7 @@ public UploadFileDO uploadFile( @NotNull String fileDir, Boolean isPicture, Bool
737750
*
738751
* @return return
739752
*/
740-
public MessageDO sendFile( @NotNull String fileDir, @NotNull String toUserName, String mediaId )
753+
public SendMsgDO sendFile( @NotNull String fileDir, @NotNull String toUserName, String mediaId )
741754
throws ItChatException {
742755
List<Pair> pairs = new ArrayList<>();
743756
if ( fileDir != null ) {
@@ -749,7 +762,7 @@ public MessageDO sendFile( @NotNull String fileDir, @NotNull String toUserName,
749762
if ( mediaId != null ) {
750763
pairs.add(new Pair<>("mediaId", "u'" + mediaId + "'"));
751764
}
752-
return (MessageDO)sendRequest(CmdTypeEnum.SEND_FILE, pairs.toArray(new Pair[ 0 ]));
765+
return (SendMsgDO)sendRequest(CmdTypeEnum.SEND_FILE, pairs.toArray(new Pair[ 0 ]));
753766
}
754767

755768
/**
@@ -761,7 +774,7 @@ public MessageDO sendFile( @NotNull String fileDir, @NotNull String toUserName,
761774
*
762775
* @return return
763776
*/
764-
public MessageDO sendImage( @NotNull String fileDir, @NotNull String toUserName, String mediaId )
777+
public SendMsgDO sendImage( @NotNull String fileDir, @NotNull String toUserName, String mediaId )
765778
throws ItChatException {
766779
List<Pair> pairs = new ArrayList<>();
767780
if ( fileDir != null ) {
@@ -773,7 +786,7 @@ public MessageDO sendImage( @NotNull String fileDir, @NotNull String toUserName,
773786
if ( mediaId != null ) {
774787
pairs.add(new Pair<>("mediaId", "u'" + mediaId + "'"));
775788
}
776-
return (MessageDO)sendRequest(CmdTypeEnum.SEND_IMAGE, pairs.toArray(new Pair[ 0 ]));
789+
return (SendMsgDO)sendRequest(CmdTypeEnum.SEND_IMAGE, pairs.toArray(new Pair[ 0 ]));
777790
}
778791

779792
/**
@@ -785,7 +798,7 @@ public MessageDO sendImage( @NotNull String fileDir, @NotNull String toUserName,
785798
*
786799
* @return return
787800
*/
788-
public MessageDO sendVideo( @NotNull String fileDir, @NotNull String toUserName, String mediaId )
801+
public SendMsgDO sendVideo( @NotNull String fileDir, @NotNull String toUserName, String mediaId )
789802
throws ItChatException {
790803
List<Pair> pairs = new ArrayList<>();
791804
if ( fileDir != null ) {
@@ -797,7 +810,7 @@ public MessageDO sendVideo( @NotNull String fileDir, @NotNull String toUserName,
797810
if ( mediaId != null ) {
798811
pairs.add(new Pair<>("mediaId", "u'" + mediaId + "'"));
799812
}
800-
return (MessageDO)sendRequest(CmdTypeEnum.SEND_VIDEO, pairs.toArray(new Pair[ 0 ]));
813+
return (SendMsgDO)sendRequest(CmdTypeEnum.SEND_VIDEO, pairs.toArray(new Pair[ 0 ]));
801814
}
802815

803816
/**
@@ -815,7 +828,7 @@ public MessageDO sendVideo( @NotNull String fileDir, @NotNull String toUserName,
815828
*
816829
* @return return
817830
*/
818-
public MessageDO send( @NotNull String msg, @NotNull String toUserName, String mediaId )
831+
public SendMsgDO send( @NotNull String msg, @NotNull String toUserName, String mediaId )
819832
throws ItChatException {
820833
List<Pair> pairs = new ArrayList<>();
821834
if ( msg != null ) {
@@ -827,7 +840,7 @@ public MessageDO send( @NotNull String msg, @NotNull String toUserName, String m
827840
if ( mediaId != null ) {
828841
pairs.add(new Pair<>("mediaId", "u'" + mediaId + "'"));
829842
}
830-
return (MessageDO)sendRequest(CmdTypeEnum.SEND, pairs.toArray(new Pair[ 0 ]));
843+
return (SendMsgDO)sendRequest(CmdTypeEnum.SEND, pairs.toArray(new Pair[ 0 ]));
831844
}
832845

833846
/**
@@ -895,13 +908,13 @@ public StatusResponseDO loadLoginStatus( String fileDir, Runnable loginCallback,
895908
"u'" + new File("src/main/resources/login.sav").getAbsolutePath() + "'"));
896909
}
897910
if ( loginCallback != null ) {
898-
callbackMapper.put("loginStatus_loginCallback", param -> loginCallback.run());
911+
callbackMapper.put(CmdTypeEnum.LOGINSTATUS_LOGINCALLBACK.getType(), param -> loginCallback.run());
899912
pairs.add(new Pair<>("loginCallback", "loginStatus_loginCallback"));
900913
} else {
901914
callbackMapper.remove("loginStatus_loginCallback");
902915
}
903916
if ( exitCallback != null ) {
904-
callbackMapper.put("loginStatus_exitCallback", param -> exitCallback.run());
917+
callbackMapper.put(CmdTypeEnum.LOGINSTATUS_EXITCALLBACK.getType(), param -> exitCallback.run());
905918
pairs.add(new Pair<>("exitCallback", "loginStatus_exitCallback"));
906919
} else {
907920
callbackMapper.remove("loginStatus_exitCallback");
@@ -931,6 +944,9 @@ public void autoLogin( Boolean hotReload, String statusStorageDir, Boolean enabl
931944
}
932945
if ( statusStorageDir != null ) {
933946
pairs.add(new Pair<>("statusStorageDir", "u'" + statusStorageDir + "'"));
947+
} else {
948+
pairs.add(new Pair<>("statusStorageDir",
949+
"u'" + new File("src/main/resources/login.sav").getAbsolutePath() + "'"));
934950
}
935951
if ( enableCmdQR != null ) {
936952
pairs.add(new Pair<>("enableCmdQR", enableCmdQR ? "True" : "False"));
@@ -942,19 +958,19 @@ public void autoLogin( Boolean hotReload, String statusStorageDir, Boolean enabl
942958
"u'" + new File("src/main/resources/QR.png").getAbsolutePath() + "'"));
943959
}
944960
if ( qrCallback != null ) {
945-
callbackMapper.put("login_qrCallback", param -> qrCallback.call((QrCodeDO)param));
961+
callbackMapper.put(CmdTypeEnum.LOGIN_QRCALLBACK.getType(), param -> qrCallback.call((QrCodeDO)param));
946962
pairs.add(new Pair<>("qrCallback", "login_qrCallback"));
947963
} else {
948964
callbackMapper.remove("login_qrCallback");
949965
}
950966
if ( loginCallback != null ) {
951-
callbackMapper.put("login_loginCallback", param -> loginCallback.run());
967+
callbackMapper.put(CmdTypeEnum.LOGIN_LOGINCALLBACK.getType(), param -> loginCallback.run());
952968
pairs.add(new Pair<>("loginCallback", "login_loginCallback"));
953969
} else {
954970
callbackMapper.remove("login_loginCallback");
955971
}
956972
if ( exitCallback != null ) {
957-
callbackMapper.put("login_exitCallback", param -> exitCallback.run());
973+
callbackMapper.put(CmdTypeEnum.LOGIN_EXITCALLBACK.getType(), param -> exitCallback.run());
958974
pairs.add(new Pair<>("exitCallback", "login_exitCallback"));
959975
} else {
960976
callbackMapper.remove("login_exitCallback");
@@ -1033,4 +1049,16 @@ public List<ContactDO> searchMps( String name, String userName ) throws ItChatEx
10331049
}
10341050
return (List<ContactDO>)sendRequest(CmdTypeEnum.SEARCH_MPS, pairs.toArray(new Pair[ 0 ]));
10351051
}
1052+
1053+
public void addFriendMessageCallback(MessageTypeEnum messageType, Callback<MessageDO> callback) {
1054+
callbackMapper.put("friend_" + messageType.getType() + "Callback", param -> callback.call((MessageDO)param));
1055+
}
1056+
1057+
public void addMpMessageCallback(MessageTypeEnum messageType, Callback<MessageDO> callback) {
1058+
callbackMapper.put("mp_" + messageType.getType() + "Callback", param -> callback.call((MessageDO)param));
1059+
}
1060+
1061+
public void addGroupMessageCallback(MessageTypeEnum messageType, Callback<GroupMessageDO> callback) {
1062+
callbackMapper.put("group_" + messageType.getType() + "Callback", param -> callback.call((GroupMessageDO)param));
1063+
}
10361064
}

0 commit comments

Comments
 (0)