// import io from 'socket.io-client'

class DataReciever {
    constructor(ip, port, callback){
        this.ip = ip;
        this.port = port;
        // this.data = new Set();
        this.data = [];
        // this._createConnection();
        this.url = `ws://${this.ip}:${this.port}`

        this._connect(this.url);

        this._updateData = callback;
        this.reconnect = false;
        // this.socket = io(this.url, {
        //     transports: ["websocket"],
        //     path: ""
        // });

        // this.socket.on('connection', (data) => {
        //     console.log('连接成功', data);
        // });

        // this.socket.on('connect_error', (data) => {
        //     console.log('连接失败', data, this.socket.io.);
        // });

        // this.socket.on('connect_timeout', (data) => {
        //     console.log('连接超时', data);
        // });

        // this.socket.emit('hello', 'world');

        // this.socket.on('message', (data) => {
        //     console.log('dwww ', data);
        // });
    }

    _connect(url){
        this.socket = new WebSocket(url);

        this.socket.onmessage = (data) => {
            // console.log("收到 ", data.data);
            if(data.data !== 'pong'){
                const rd = JSON.parse(data.data);
                this._updateData(rd.data);
            }
            // else if(data.data === 'pong'){
            //     console.log(`收到心跳消息`);
            //     this.connected = true;
            // }
        }

        this.socket.onerror = (data) => {
            // console.log("连接出现错误");
        }

        this.socket.onopen = (data) => {
            // console.log("已连接 "/*, data.target.url*/);
            // alert(`连接`);
            //开始心跳
            // this.connected = true;
            // this._heartBeatStart();
        }

        this.socket.onclose = (data) => {
            if(data.code !== 1000){
                // console.log(`关闭连接 代码:${data.code}  原因:[${data.reason}]  wasClean:${data.wasClean}`);
                console.log(`关闭连接 代码:${data.code}  wasClean:${data.wasClean}`);
                // alert(`连接出现错误，错误原因：${data.reason}，错误代码：${data.code}`);
            }
            else{
                // console.log(`关闭连接`);
                alert(`连接被关闭`);
            }

            if(this.reconnect){
                setTimeout(() => {
                    this.socket = this._connect(url);
                    // console.log("重连 "/*, url*/);
                }, 30000);
            }
        }

        // console.log('创建连接'/*, this.url*/);
    }

    // _heartBeatStart(){
    //     setInterval(() => {
    //         if(this.connected){
    //             console.log(`发送心跳消息`);
    //             this.socket.send('ping');
    //             this.connected = false;
    //         }
    //         else{
    //             this.socket.close(999, '未收到服务端心跳包');
    //             this._connect(this.url);
    //         }
    //     }, 30000);
    // }
}

export default DataReciever;