Skip to content

Commit 8c202b0

Browse files
committed
send_text_message_nak
1 parent fe3a15a commit 8c202b0

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

injector.js

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const Common = {
33
EMOJI_MAXIUM_SIZE: 120,
44
WEBSOCKET_URL: 'wss://127.0.0.1:9000/ws',
55
DEBUG: false,
6+
SEND_TEXT_MESSAGE_TIMEOUT: 10,
67
}
78

89
const console2 = {
@@ -147,15 +148,23 @@ class CtrlServer {
147148
let old = chatFactory.getCurrentUserName()
148149
try {
149150
chatFactory.setCurrentUserName(data.receiver)
150-
this.localID = (utilFactory.now() + Math.random().toFixed(3)).replace(".", "")
151-
this.seenLocalID.add(this.localID)
151+
let localID = this.localID = (utilFactory.now() + Math.random().toFixed(3)).replace(".", "")
152+
this.seenLocalID.add(localID)
152153
if (data.message.startsWith('!html '))
153-
editArea.editAreaCtn = data.message.substr(6)
154+
data.message = data.message.substr(6)
154155
else if (data.message.startsWith('!m '))
155-
editArea.editAreaCtn = data.message.substr(3).replace(/\\n/g, '\n').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
156+
data.message = data.message.substr(3).replace(/\\n/g, '\n').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
156157
else
157-
editArea.editAreaCtn = data.message.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
158+
data.message = data.message.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
159+
editArea.editAreaCtn = data.message
158160
editArea.sendTextMessage()
161+
setTimeout(() => {
162+
if (this.seenLocalID.has(localID))
163+
this.send({command: 'send_text_message_nak',
164+
receiver: data.receiver,
165+
message: data.message
166+
})
167+
}, Common.SEND_TEXT_MESSAGE_TIMEOUT)
159168
} catch (ex) {
160169
this.send({command: 'web_debug', message: 'send text message exception: ' + ex.message + "\nstack: " + ex.stack})
161170
console2.error(ex.stack)
@@ -528,7 +537,7 @@ class Injector {
528537
try {
529538
// 服务端通过WebSocket控制网页版发送消息,无需投递到服务端
530539
if (window.ctrlServer.seenLocalID.has(e.LocalID))
531-
;
540+
window.ctrlServer.seenLocalID.delete(e.LocalID)
532541
// 非服务端生成
533542
else {
534543
let sender = contactFactory.getContact(e.MMActualSender)

wechatircd.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,10 @@ def stop(self):
113113

114114
def close_connections(self):
115115
for ws in self.ws:
116-
ws.send_str(json.dumps({'command': 'close'}))
116+
try:
117+
ws.send_str(json.dumps({'command': 'close'}))
118+
except:
119+
pass
117120

118121
def send_file(self, receiver, filename, body):
119122
for ws in self.ws:
@@ -139,6 +142,7 @@ def send_text_message(self, receiver, msg):
139142
}))
140143
except:
141144
pass
145+
break
142146

143147
def add_friend(self, username, message):
144148
for ws in self.ws:

0 commit comments

Comments
 (0)