@@ -44,8 +44,14 @@ function WebSocketConnect(userInfo,toUserInfo = null) {
44
44
} )
45
45
46
46
ws . onopen = function ( ) {
47
+ // layer.msg("websocket 连接已建立");
48
+ chat_info . html ( chat_info . html ( ) +
49
+ '<li class="systeminfo" > <span>' +
50
+ "✅ websocket 连接已建立 " +
51
+ '</span></li>' ) ;
47
52
ws . send ( send_data ) ;
48
53
//console.log("send_data 发送数据", send_data)
54
+ toLow ( ) ;
49
55
} ;
50
56
51
57
// if ( toUserInfo )
@@ -68,6 +74,7 @@ function WebSocketConnect(userInfo,toUserInfo = null) {
68
74
69
75
70
76
let chat_info = $ ( '.main .chat_info' )
77
+ let isServeClose = 0 ;
71
78
72
79
ws . onmessage = function ( evt ) {
73
80
var received_msg = JSON . parse ( evt . data ) ;
@@ -115,6 +122,7 @@ function WebSocketConnect(userInfo,toUserInfo = null) {
115
122
break ;
116
123
case - 1 :
117
124
ws . close ( ) // 主动close掉
125
+ isServeClose = 1
118
126
console . log ( "client 连接已关闭..." ) ;
119
127
break ;
120
128
case 4 :
@@ -157,23 +165,39 @@ function WebSocketConnect(userInfo,toUserInfo = null) {
157
165
default :
158
166
}
159
167
//console.log("数据已接收...", received_msg);
168
+
169
+ // 滚动条滚到最下面
170
+ toLow ( ) ;
171
+
160
172
} ;
161
173
162
- ws . onclose = function ( ) {
174
+ ws . onclose = function ( evt ) {
163
175
// 关闭 websocket
164
- chat_info . html ( chat_info . html ( ) +
165
- '<li class="systeminfo"> <span>' +
166
- "与服务器连接断开,请刷新页面重试" +
167
- '</span></li>' ) ;
176
+ if ( isServeClose === 1 ) {
177
+ chat_info . html ( chat_info . html ( ) +
178
+ '<li class="systeminfo"> <span>' +
179
+ "❌ 与服务器连接断开,请检查是否在浏览器中打开了多个聊天界面" +
180
+ '</span></li>' ) ;
181
+ } else {
182
+ chat_info . html ( chat_info . html ( ) +
183
+ '<li class="systeminfo"> <span>' +
184
+ "❌ 与服务器连接断开,正在尝试重新连接,请稍后..." +
185
+ '</span></li>' ) ;
186
+ }
168
187
// let c = ws.close() // 主动close掉
169
- console . log ( "serve 连接已关闭... " + _time ( ) ) ;
188
+ console . log ( "serve 连接已关闭... " + _time ( ) , evt ) ;
170
189
// console.log(c);
190
+ toLow ( ) ;
171
191
} ;
172
192
173
193
ws . onerror = function ( evt ) {
174
- ws . close ( )
194
+ // ws.close()
175
195
console . log ( "触发 onerror" , evt )
176
196
}
197
+
198
+ ws . onreconnect = ( e ) => {
199
+ console . log ( 'reconnecting...' ) ;
200
+ }
177
201
178
202
} else {
179
203
// 浏览器不支持 WebSocket
@@ -184,6 +208,11 @@ function WebSocketConnect(userInfo,toUserInfo = null) {
184
208
$ ( document ) . ready ( function ( ) {
185
209
// ------------------------选择聊天室页面-----------------------------------------------
186
210
211
+ // 在页面即将卸载之前关闭WebSocket连接
212
+ window . addEventListener ( "beforeunload" , function ( ) {
213
+ console . log ( "beforeunload close" ) ;
214
+ ws . close ( ) ;
215
+ } ) ;
187
216
// 用户信息提交
188
217
189
218
$ ( '#userinfo_sub' ) . click ( function ( event ) {
@@ -304,9 +333,7 @@ $(document).ready(function(){
304
333
305
334
306
335
// 滚动条滚到最下面
307
- $ ( '.scrollbar-macosx.scroll-content.scroll-scrolly_visible' ) . animate ( {
308
- scrollTop : $ ( '.scrollbar-macosx.scroll-content.scroll-scrolly_visible' ) . prop ( 'scrollHeight' )
309
- } , 500 ) ;
336
+ toLow ( ) ;
310
337
311
338
// 解决input上传文件选择同一文件change事件不生效
312
339
event . target . value = ''
@@ -357,9 +384,7 @@ $(document).ready(function(){
357
384
ws . send ( send_data ) ;
358
385
359
386
// 滚动条滚到最下面
360
- $ ( '.scrollbar-macosx.scroll-content.scroll-scrolly_visible' ) . animate ( {
361
- scrollTop : $ ( '.scrollbar-macosx.scroll-content.scroll-scrolly_visible' ) . prop ( 'scrollHeight' )
362
- } , 500 ) ;
387
+ toLow ( ) ;
363
388
364
389
}
365
390
@@ -489,4 +514,10 @@ function isPrivateChat()
489
514
return window . location . href . search ( 'private-chat' ) > 0
490
515
}
491
516
517
+ function toLow ( ) {
518
+ $ ( '.scrollbar-macosx.scroll-content.scroll-scrolly_visible' ) . animate ( {
519
+ scrollTop : $ ( '.scrollbar-macosx.scroll-content.scroll-scrolly_visible' ) . prop ( 'scrollHeight' )
520
+ } , 500 ) ;
521
+ }
522
+
492
523
0 commit comments