zoukankan      html  css  js  c++  java
  • WebSocket 使用

    heartCheck: {
                    reconnectCount: 5,
                    timeout: 50000,
                    timeoutObj: null,
                    serverTimeoutObj: null,
                    reset: () => {
                        this.heartCheck.reconnectCount = 5;
                        if (this.heartCheck.timeoutObj)
                            clearTimeout(this.heartCheck.timeoutObj);
                        if (this.heartCheck.serverTimeoutObj)
                            clearTimeout(this.heartCheck.serverTimeoutObj);
                        console.log('reset')
                        this.heartCheck.timeoutObj = setTimeout(() => {
                            this.websoket.send("alive");
                            // 发送过去过了timeout还没接受到消息的话就断开重连
                            this.heartCheck.serverTimeoutObj = setTimeout(() => {
                                this.websoket.close();
                                this.websoketFn();//重连
                            }, this.heartCheck.timeout)
                        }, this.heartCheck.timeout)
                    },
                },
    // 先定义需要的数据,以及断开重连函数
    websoketFn() {
                // this.websoket = new WebSocket(`wss://` + url);
                this.websoket = new WebSocket(`ws://192.168.10.183` + this.$route.query.roomId)
                console.log(this.websoket);
                
                // 开启的回调
                this.websoket.onopen = () => {
                    this.heartCheck.reset();
                    console.log('发送数据')
                };
                // 通信时
                this.websoket.onmessage = (event) => {
                    // 重置之前的心跳
                    this.heartCheck.reset();
                    console.log('数据已接收...');
                    
                };
                this.websoket.onerror = (event) => {
                    this.heartCheck.reconnectCount--;
                    if (this.heartCheck.reconnectCount > 0) {
                        setTimeout(() => {
                            this.websoketFn();//重连
                        }, 2000)
                    } else {
                        console.log('链接出错');
                        
    } };
    this.websoket.onclose = () => { if (this.heartCheck.timeoutObj) clearTimeout(this.heartCheck.timeoutObj); if (this.heartCheck.serverTimeoutObj) clearTimeout(this.heartCheck.serverTimeoutObj); console.log("连接已关闭"); }; },
    // 简易版
    initWebSocket(){ //初始化weosocket
                const wsuri = `ws://192.168.10.182/` + this.$route.query.roomId      
                 this.websock = new WebSocket(wsuri);        
                 this.websock.onmessage = this.websocketonmessage()      
                 this.websock.onopen = this.websocketonopen()
                 this.websock.onerror = this.websocketonerror() 
                 this.websock.onclose = this.websocketclose()
            },
            websocketonopen(){ //连接建立之后执行send方法发送数据
                let actions = {"type":0,"liveStudioId":this.$route.query.roomId,"userId": sessionStorage.getItem('userId'),"userName": sessionStorage.getItem('nickname'),"msg":'1111'}        
                this.websocketsend(JSON.stringify(actions))
            },
            websocketonerror(){//连接建立失败重连
                this.heartCheck.reconnectCount--;
                if (this.heartCheck.reconnectCount > 0) {
                    setTimeout(() => {
                        this.initWebSocket();//重连
                    }, 2000)
                } else {
                    console.log('链接出错');
                    
                }
            },
            websocketonmessage(e){ //数据接收
                this.heartCheck.reset();
                console.log('数据已接收...');
            },
            websocketsend(Data){//数据发送
                this.websock.send(Data);
            },
            websocketclose(e){  //关闭
                if (this.heartCheck.timeoutObj) {
                    clearTimeout(this.heartCheck.timeoutObj)
                    if (this.heartCheck.serverTimeoutObj) {
                        clearTimeout(this.heartCheck.serverTimeoutObj)
                        console.log("连接已关闭")
                    }
                }
            },
  • 相关阅读:
    AJAX的使用
    django.template.exceptions.TemplateDoesNotExist: login.html报错
    cookie、session
    关于zipfile解压出现的字符编码问题
    使用jquery清空input 文本框中的内容
    DVWA SQL-injection 附python脚本
    关于itchat用法的一篇博文
    记录两个python itchat的用法博客网址
    pyinstaller 打包.exe文件记录遇到的问题
    用python编写的excel拆分小工具
  • 原文地址:https://www.cnblogs.com/baifubin/p/11308007.html
Copyright © 2011-2022 走看看