123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import config from '@/config/index';
- let websocket = null; //全局WebSocket对象
- let lockReconnect = false; // 网络断开重连
- let wsCreateHandler = null; // 创建连接
- export function createSocket(fn, err) {
- try {
- if ('WebSocket' in window) websocket = new window.WebSocket(config.base.ws);
- else if ('MozWebSocket' in window)
- websocket = new window.MozWebSocket(config.base.ws);
- else reconnect(err);
- } catch {
- reconnect(err);
- return;
- }
- websocket.onmessage = function (data) {
- fn &&
- fn({
- ws: websocket,
- data: JSON.parse(data.data),
- });
- };
- websocket.onopen = function (event) {
- // websocket.send("连接成功");
- console.log('服务已连接', event);
- };
- websocket.onclose = function (event) {
- console.log('服务连接关闭', event);
- };
- websocket.onerror = function (event) {
- console.log(event, '连接出错');
- err && err();
- };
- }
- /**
- * 异常处理
- * 处理可以检测到的异常,并尝试重新连接
- */
- function reconnect(err) {
- if (lockReconnect) {
- return;
- }
- err && err();
- console.log('reconnect', err);
- lockReconnect = true;
- // 没链接上会一直连接,设置延迟,避免过多请求
- wsCreateHandler && clearTimeout(wsCreateHandler);
- wsCreateHandler = setTimeout(function () {
- console.log('-----websoket异常-------');
- createSocket();
- lockReconnect = false;
- }, 1000);
- }
|