这篇文章给大家介绍JavaScript中WebSocket断开的原因是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
JavaScript是什么
JavaScript是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript是被广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。
1,断开原因
WebSocket断开的原因有很多,最好在WebSocket断开时,将错误打印出来。
ws.onclose =, function (e), { console.log才能(& # 39;websocket 断开:,& # 39;,+,e.code +, & # 39;, & # 39;, +, e.reason +, & # 39;, & # 39;, +, e.wasClean) console.log才能(e) }
错误状态码:
WebSocket断开时,会触发CloseEvent, CloseEvent会在连接关闭时发送给使用WebSockets的客户端。它在WebSocket对象的> var lockReconnect =,假,,,//避免ws重复连接 var ws =,零,,,,,,,,,,,//,判断当前浏览器是否支持WebSocket var wsUrl =, serverConfig.socketUrl; createWebSocket (wsUrl);,,,//连接ws function createWebSocket (url), { ,,,试着{ ,,,,,,,如果(& # 39;websocket # 39;,拷贝窗口){ ,,,,,,,,,,,ws =, new WebSocket (url); ,,,,,,,} ,,,,,,,initEventHandle (); ,,,}捕捉(e) { ,,,,,,,连接(url); ,,,,,,,console.log (e); ,,,},,,,, } function initEventHandle (), { ,,,ws.onclose =, function (), { ,,,,,,,连接(wsUrl); ,,,,,,,console.log(“国际连接关闭!“+ new 日期().toLocaleString ()); ,,,}; ,,,ws.onerror =, function (), { ,,,,,,,连接(wsUrl); ,,,,,,,console.log(“国际连接错误!“); ,,,}; ,,,ws.onopen =, function (), { ,,,,,,,heartCheck.reset () .start(),,,,,,,//心跳检测重置 ,,,,,,,console.log(“国际连接成功!“+ new 日期().toLocaleString ()); ,,,}; ,,,ws.onmessage =, function (事件),{,,,//如果获取到消息,心跳检测重置 ,,,,,,,heartCheck.reset () .start(),,,,,,,//拿到任何消息都说明当前连接是正常的 ,,,,,,,console.log(“国际收到消息啦:“,+ event.data); ,,,,,,,如果(event.data !=& # 39; pong # 39;) { ,,,,,,,,,,,let data =, jsON.parse (event.data); ,,,,,,,} ,,,}; }//,监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,服务器端会抛异常。 时间=window.onbeforeunload 函数(),{ ,,,ws.close (); },, function 连接(url), { ,,,如果(lockReconnect),返回; ,,,lockReconnect =,真的; ,,,setTimeout (function (),{,,,,//没连接上会一直重连,设置延迟避免请求过多 ,,,,,,,createWebSocket (url); ,,,,,,,lockReconnect =,假; ,,,},,2000); }//心跳检测 var heartCheck =, { 超时:,,,,1000,,,,,,,,,//1分钟发一次心跳 ,,,timeoutObj:,空, ,,,serverTimeoutObj:,空, ,,,重置:,函数(){ ,,,,,,,clearTimeout (this.timeoutObj); ,,,,,,,clearTimeout (this.serverTimeoutObj); ,,,,,,,return ; ,,,}, ,,,开始:,函数(){ ,,,,,,,var self =,; ,,,,,,,this.timeoutObj =, setTimeout(函数(){ ,,,,,,,,,,,//这里发送一个心跳,后端收到后,返回一个心跳消息, ,,,,,,,,,,,//onmessage拿到返回的心跳就说明连接正常 ,,,,,,,,,,,ws.send (“ping"); ,,,,,,,,,,,console.log(“萍!“) null null null null null null null null null null null null null null