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 ,如果多个的话,会造成你不知道会是哪个通道在接受消息。