WebSocket

项目需求最近研究了一下WebSocket,可以说是很强大的了。下面贴出在项目中用到的代码:

1.路径

//localhost
function routePath() {
    var reg = /mbfz.bjzhyy.org/g, url = window.location.href, reg1 = /https:/, path = {};
    path = {
        path: url.split('/')[0] + '//' + url.split('/')[2]
    };
    if (/localhos/.exec(url)) {
        path = {
           path: 'url'
        };
    }
    return path
}
//线上
function routePathWs() {
    var path = {
        path: 'url'
    };
    return path
}

2.WebSocket,注意Ws和Wss的区别,也就是http和https的区别。

//websocket方法
function connect(url, query, fn, thing) {
    websocket = null, websocket_ping = (routePathWs().path).split('//')[1];
    websocket = new WebSocket("wss://" + websocket_ping + url + query);
    websocket.onerror = function (event) {
        setMessageInnerHTML("error", event.data, websocket.readyState);
    };
//连接成功建立的回调方法
    websocket.onopen = function (event) {
        setMessageInnerHTML("open", websocket.readyState);
    };

//接收到消息的回调方法
    websocket.onmessage = function (event) {
        console.log(event.data)
        if (typeof fn == 'function') {
            fn(event)
        }
    };
//连接关闭的回调方法
    websocket.onclose = function () {
        setMessageInnerHTML("close", websocket.readyState);
        socketCount++;
        if (socketCount == 3) {
            if (typeof thing == 'function') {
                thing()
            }
            return
        }
        connect(url, query, fn, thing)
    };

//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
    window.onbeforeunload = function () {
        websocket.close();
    }

}

//将消息显示在网页上
function setMessageInnerHTML(innerHTML) {
    console.log(innerHTML)
}

//关闭连接
function closeWebSocket() {
    websocket.close();
}

//发送消息
function send() {
    //var message = document.getElementById('text').value;
    //websocket.send(message);
}

3.webSocket的使用

 var value_message = function (event) {
            var text = event.data, data = '';
            try {
                text = "JSON" in window ? JSON.parse(text) : eval("(" + text + ")");
                if (text["message"] != undefined) {
                  //拿到返回的数据
                }
            } catch (e) {

            }
        };
        var thing = function () {
            window.setInterval(reject_number, 10000);
        }
        
        //注意这里reject_number返回的数据其实和webSocket返回时一样的;
        if (!!window.WebSocket && window.WebSocket.prototype.send) {
             //判断浏览器如果支持websocket,握手成功后等待服务器通知执行操作;如果websocket无效,那就走定时器执行操作
            connect('/socketService/3/', id, value_message, thing);
        } else {
            window.setInterval(reject_number, 10000);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值