@@ -3,6 +3,7 @@ const Common = {
3
3
EMOJI_MAXIUM_SIZE : 120 ,
4
4
WEBSOCKET_URL : 'wss://127.0.0.1:9000/ws' ,
5
5
DEBUG : false ,
6
+ SEND_TEXT_MESSAGE_TIMEOUT : 10 ,
6
7
}
7
8
8
9
const console2 = {
@@ -147,15 +148,23 @@ class CtrlServer {
147
148
let old = chatFactory . getCurrentUserName ( )
148
149
try {
149
150
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 )
152
153
if ( data . message . startsWith ( '!html ' ) )
153
- editArea . editAreaCtn = data . message . substr ( 6 )
154
+ data . message = data . message . substr ( 6 )
154
155
else if ( data . message . startsWith ( '!m ' ) )
155
- editArea . editAreaCtn = data . message . substr ( 3 ) . replace ( / \\ n / g, '\n' ) . replace ( / & / g, '&' ) . replace ( / < / g, '<' ) . replace ( / > / g, '>' )
156
+ data . message = data . message . substr ( 3 ) . replace ( / \\ n / g, '\n' ) . replace ( / & / g, '&' ) . replace ( / < / g, '<' ) . replace ( / > / g, '>' )
156
157
else
157
- editArea . editAreaCtn = data . message . replace ( / & / g, '&' ) . replace ( / < / g, '<' ) . replace ( / > / g, '>' )
158
+ data . message = data . message . replace ( / & / g, '&' ) . replace ( / < / g, '<' ) . replace ( / > / g, '>' )
159
+ editArea . editAreaCtn = data . message
158
160
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 )
159
168
} catch ( ex ) {
160
169
this . send ( { command : 'web_debug' , message : 'send text message exception: ' + ex . message + "\nstack: " + ex . stack } )
161
170
console2 . error ( ex . stack )
@@ -528,7 +537,7 @@ class Injector {
528
537
try {
529
538
// 服务端通过WebSocket控制网页版发送消息,无需投递到服务端
530
539
if ( window . ctrlServer . seenLocalID . has ( e . LocalID ) )
531
- ;
540
+ window . ctrlServer . seenLocalID . delete ( e . LocalID )
532
541
// 非服务端生成
533
542
else {
534
543
let sender = contactFactory . getContact ( e . MMActualSender )
0 commit comments