Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
W
wxBot
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
wxBot
Commits
5e4f07e9
Commit
5e4f07e9
authored
Aug 02, 2017
by
Paul0523
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加缓存消息功能
parent
ce5f3361
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
31 deletions
+39
-31
src/main/java/com/yg84/Login.java
src/main/java/com/yg84/Login.java
+9
-3
src/main/java/com/yg84/weixin/Contact.java
src/main/java/com/yg84/weixin/Contact.java
+9
-0
src/main/java/com/yg84/weixin/WeChat.java
src/main/java/com/yg84/weixin/WeChat.java
+21
-28
No files found.
src/main/java/com/yg84/Login.java
View file @
5e4f07e9
...
...
@@ -22,8 +22,10 @@ public class Login {
public
static
WeChat
weChat
;
ArrayBlockingQueue
<
Message
>
messageQueue
=
new
ArrayBlockingQueue
<
Message
>(
10000
);
@PostConstruct
public
void
initWeChat
()
{
if
(
weChat
!=
null
)
{
weChat
.
stopProcessThread
();
}
MessageHandler
handler
=
new
MessageHandler
()
{
@Override
public
void
handleMsg
(
List
<
Message
>
messages
)
throws
Exception
{
...
...
@@ -36,6 +38,7 @@ public class Login {
@RequestMapping
(
value
=
"/login"
)
public
String
login
()
throws
Exception
{
initWeChat
();
return
weChat
.
run
();
}
...
...
@@ -62,9 +65,12 @@ public class Login {
@RequestMapping
(
value
=
"/syncLoadMessage"
)
public
List
<
Message
>
syncLoadMessage
()
throws
Exception
{
List
<
Message
>
messages
=
new
ArrayList
<>();
Message
message
;
while
((
message
=
messageQueue
.
poll
(
5
,
TimeUnit
.
SECONDS
))
!=
null
)
{
Message
message
=
messageQueue
.
poll
(
5
,
TimeUnit
.
SECONDS
)
;
if
(
message
!=
null
)
{
messages
.
add
(
message
);
while
((
message
=
messageQueue
.
poll
())
!=
null
)
{
messages
.
add
(
message
);
}
}
return
messages
;
}
...
...
src/main/java/com/yg84/weixin/Contact.java
View file @
5e4f07e9
...
...
@@ -11,6 +11,7 @@ public class Contact {
private
String
userName
;
private
String
nickName
;
private
String
remarkName
;
private
String
headImgUrl
;
public
String
getUserName
()
{
return
userName
;
...
...
@@ -35,4 +36,12 @@ public class Contact {
public
void
setRemarkName
(
String
remarkName
)
{
this
.
remarkName
=
remarkName
;
}
public
String
getHeadImgUrl
()
{
return
headImgUrl
;
}
public
void
setHeadImgUrl
(
String
headImgUrl
)
{
this
.
headImgUrl
=
headImgUrl
;
}
}
src/main/java/com/yg84/weixin/WeChat.java
View file @
5e4f07e9
...
...
@@ -66,8 +66,6 @@ public class WeChat {
private
Map
<
String
,
Contact
>
contactByUserName
;
private
JSONArray
member
;
private
JSONObject
MY_ACOUNT
;
private
JSONObject
SyncKeyObject
;
...
...
@@ -82,6 +80,8 @@ public class WeChat {
private
MessageHandler
handler
;
private
boolean
dealMsg
=
true
;
public
WeChat
(
MessageHandler
handler
)
{
System
.
setProperty
(
"jsse.enableSNIExtension"
,
"false"
);
if
(
handler
==
null
)
...
...
@@ -163,8 +163,6 @@ public class WeChat {
private
String
init
()
throws
Exception
{
//https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=1500802067&lang=en_US&pass_ticket=nUdHkjHvQdDvTjkKgwXvWKxhUnaHRVkEThSlewnfN96PrCKNz7BzfnHsJMeGEDIv'
//https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=1500802122287&lang=en_US&pass_ticket=OHko%2FnZBuD7LEo263JXXkoDfDqQPrTyV%2FzVScFha0TjoGUYrOwAPUpW2kudYrYWy&skey=@crypt_1f56ee6a_6635b93ce4b5e19d2b7ce05344cb71bb
String
paramTemplate
=
"/webwxinit?r=%s&lang=en_US&pass_ticket=%s&skey=%s"
;
String
url
=
String
.
format
(
BASE_URL
+
paramTemplate
,
getTimestamp
(),
pass_ticket
,
skey
);
String
json
=
String
.
format
(
INIT_JSON
,
wxsid
,
skey
,
DeviceID
,
wxuin
);
...
...
@@ -175,12 +173,23 @@ public class WeChat {
JSONObject
msgObject
=
JSONObject
.
parseObject
(
msg
);
initMyAcount
(
msgObject
);
initSyncKey
(
msgObject
);
initContact
();
notifyWeixin
();
testSyncAndInitTimer
();
initContact
();
return
"微信初始化成功!"
;
}
private
String
notifyWeixin
()
throws
Exception
{
String
msgId
=
(
getTimestamp
()
*
1000
)
+
((
Math
.
random
()
+
""
).
substring
(
0
,
5
).
replace
(
"."
,
""
));
String
url
=
BASE_URL
+
"/webwxstatusnotify?lang=zh_CN&pass_ticket="
+
pass_ticket
;
String
jsonTemplate
=
"{\"BaseRequest\": {\"Sid\": \"%s\", \"Skey\": \"%s\", \"DeviceID\": \"%s\", \"Uin\": %s},\"Code\": 3,\"FromUserName\": \"%s\",\"ToUserName\": \"%s\",\"ClientMsgId\": %s}"
;
String
json
=
String
.
format
(
jsonTemplate
,
wxsid
,
skey
,
DeviceID
,
wxuin
,
myAcount
.
getUserName
(),
myAcount
.
getUserName
(),
msgId
);
Response
response
=
postJson
(
url
,
json
);
if
(!
response
.
isSuccessful
())
return
"微信服务器唤醒失败"
;
String
msg
=
response
.
body
().
string
();
return
"微信唤醒成功!"
;
}
private
String
sync
()
throws
Exception
{
...
...
@@ -332,16 +341,6 @@ public class WeChat {
}
private
void
testSyncAndInitTimer
()
throws
Exception
{
// def test_sync_check(self):
// for host1 in ['webpush.', 'webpush2.']:
// self.sync_host = host1+self.base_host
// try:
// retcode = self.sync_check()[0]
// except:
// retcode = -1
// if retcode == '0':
// return True
// return False
String
[]
hosts
=
new
String
[]{
"webpush."
};
for
(
String
host
:
hosts
)
{
SYNC_HOST
=
host
+
BASE_HOST
;
...
...
@@ -351,16 +350,6 @@ public class WeChat {
}
}
new
ReceiveMsgThread
().
start
();
// SYNC_TIMER.schedule(new TimerTask() {
// @Override
// public void run() {
// try {
// sync();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// }, 1000, 2000);
}
private
void
initMyAcount
(
JSONObject
msgObject
)
{
...
...
@@ -381,10 +370,10 @@ public class WeChat {
if
(!
response
.
isSuccessful
())
return
"获取朋友列表失败!"
;
String
msg
=
response
.
body
().
string
();
member
=
JSONObject
.
parseObject
(
msg
).
getJSONArray
(
"MemberList"
);
contacts
=
JSONObject
.
parseArray
(
JSONObject
.
parseObject
(
msg
).
getString
(
"MemberList"
),
Contact
.
class
);
contactByUserName
=
new
HashMap
<>();
contacts
.
forEach
(
contact
->
{
contact
.
setHeadImgUrl
(
BASE_URL
+
contact
.
getHeadImgUrl
()
+
skey
);
contactByUserName
.
put
(
contact
.
getUserName
(),
contact
);
});
return
"获取朋友列表成功!"
;
...
...
@@ -398,10 +387,14 @@ public class WeChat {
System
.
out
.
println
(
m
.
find
());
}
public
void
stopProcessThread
()
{
dealMsg
=
false
;
}
class
ReceiveMsgThread
extends
Thread
{
@Override
public
void
run
()
{
while
(
true
)
{
while
(
dealMsg
)
{
try
{
sync
();
}
catch
(
Exception
e
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment