网友回复
以下是vue版本的一个websocket重连机制,代码如下:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1.js"></script>
</head>
<body>
    <div id="app">
    </div>
    <script>
        let websock = null;
        let socketTimer = null;
        let socketParam = {
          type: 'test'
        };
         new Vue({
                el: '#app',
       name: 'test',
      data () {
        return {
          socketUrl: 'ws://web.debug.only.bfw.wiki:9502', 
          timerWS: null, // 用于ws重连
          timerCountWS: 0, // 用于重连计数,0-立刻开始重连,非0-1min重连一次。
          timerFlagWS: true // 跳转页面了不再重连
        }
      },
      mounted () {
        this.initWebsocket()
      },
      destroyed () {
        // 关闭websocket
        this.timerFlagWS = false;
        this.timerCountWS = 0;
        clearTimeout(this.timerWS)
        if (websock !== null) {
          websock.close();
          websock = null;
        }
        clearTimeout(socketTimer);
      },
      methods: {
        initWebsocket () {
          if (typeof WebSocket !== 'undefined') {
            this.timerCountWS++;
            // 浏览器支持Websocket通信协议 ...点击查看剩余70%
jquery版本的websocket断线重连,代码如下:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
     $(function() {
	var lockReconnect = false;//避免重复连接
	var ws = null; //WebSocket的引用
	var wsUrl = "web.debug.only.bfw.wiki:9992"; //这个要与后端提供的相同
	//创建WebSocket连接,如果不确定浏览器是否支持,可以使用socket.js做连接
	function createWebSocket(url){
		 try {
			 if ('WebSocket' in window) {
		        ws = new WebSocket("ws://" + url + "/socketServer");
		     } else {
		        ws = new SockJS("http://" + url + "/sockjs/socketServer");
		     }
	         initEventHandle();
	     } catch (e) {
	         reconnect(wsUrl);
	     }
	}
	
	function reconnect(url) {
        if(lockReconnect) return;
        lockReconnect = true;
        //没连接上会一直重连,设置延迟避免请求过多
        setTimeout(function () {
            createWebSocket(wsUrl);
            console.log("正在重连,当前时间"+new Date())
            lockReconnect = false;
        }, 5000); //这里设置重连间...点击查看剩余70%
- threejs如何做个三维搭积木的游戏?
- three如何实现标记多个起始路过地点位置后选择旅行工具(飞机汽车高铁等),最后三维模拟行驶动画导出mp4?
- ai实时驱动的3d数字人可视频聊天的开源技术有吗
- swoole+phpfpm如何实现不同域名指向不同目录的多租户模式?
- 如何用go替换nginx实现请求phpfpm解析运行php脚本?
- 有没有浏览器离线运行进行各种文档、图片、视频格式转换的开源工具?
- 如何使用go语言搭建一个web防火墙?
- linux如何检测特定网络协议比如http协议中报文是否包含特点关键词并阻止返回给客户?
- 如果在nginx外过滤包含某些关键词的网页并阻止打开?
- 程序员怎么做副业赚钱?



 
				 
			 
			 
				 
			