Webscoket 断线重连

// 断线重连间隔
const reconnectInterval = 3000;

export default function ReconnectWebSocket(url) {
    let ws;
    let eventEmitter = new EventEmitter();

    (function connect() {

        ws = new WebSocket(url);
        ws.binaryType = "arraybuffer";

        ws.addEventListener('open', (e) => {
            eventEmitter.emit('open');
        });

        ws.addEventListener('message', (e) => {
            eventEmitter.emit('message', e);
        });

        ws.addEventListener('close', () => {
            eventEmitter.emit('close');
            console.log('WebSocket reconnecting...');
            setTimeout(connect, reconnectInterval);
        });

    })();

    eventEmitter.addListener('send', (msg) => {
        ws.send(msg);
    });

    eventEmitter.send = (msg) => {
        eventEmitter.emit('send', msg);
    }

    return eventEmitter;
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容