websoket 的重连和代理

websoket 如果长时间没有发送消息会出现休眠状况

这里有一个插件。可以重连

https://github.com/joewalnes/reconnecting-websocket

点击打开链接

var ws = new WebSocket('ws://....');

使用  ReconnectingWebSocket  代替 WebSocket

var ws = new ReconnectingWebSocket('ws://....');

这个方法可以实现从链接


下面是websoket发送消息的代理。这样是为了检查websoket 没有连接上或是正在连接发送不了消息,并且会报错的问题


 //webpack代理函数
    function send(message) {
        waitForConnection(function() {
            ws.send(message);
        }, 500);
    };

    function waitForConnection(callback, interval) {

        if (ws.readyState == 1) {
            callback();
        }else if(ws.readyState == 0){
            setTimeout(function() {
                waitForConnection(callback, interval);
            }, interval);
        }else {

            ws.onopen = function() {
                $$.tip("socket链接成功");
                console.log("Connection open...");
            };
            waitForConnection(callback, interval);
        }
    };


顺带说一下。竟然保证页面上只有一个onmassage 和一个onsend 通道,如果走代理的话那就只有一个send通道。当时也要保证接受数据的时候是同一个onmassge ,如果多个的话,会造成你不知道会是哪个通道在接受消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值