window.lockStepClient = {
    matchCallback:null,
    onRecvFromClientCallback:null,
    onPlayerQuitCallback:null,
    login(openid,name,avatarUrl,gender,callback)
    {
        if(openid ==='' || name ==='' ||avatarUrl ==='' ||gender ==='' ||callback == null) return;

        let Self = this;
        
        //  this.ws = new WebSocket("ws://localhost:3000");
            // this.ws = new WebSocket("ws://121.4.59.141:3000/node/");
            // this.ws = new WebSocket("ws://www.yuyekeji.cn:3000/node/");
            this.ws = new WebSocket("ws://www.yuyekeji.cn:3000/");
            // this.ws = new WebSocket("ws://192.168.31.211:3000");
            
         this.ws.onopen = function () {
            //当WebSocket创建成功时，触发onopen事件
            console.log("WebSocket建立成功");
            console.log("open");

            let player_info = {};
            player_info.type = "login";
            player_info.openid = openid;
            player_info.name = name;
            player_info.avatarUrl = avatarUrl;
            player_info.gender = gender;
             // console.log('player_info=',player_info)

            Self.ws.send(JSON.stringify(player_info)); //将消息发送到服务端
            callback();
        }

        this.ws.onmessage = function (e) {
            //当客户端收到服务端发来的消息时，触发onmessage事件，参数e.data包含server传递过来的数据
            // console.log(e.data);
            let data_json = JSON.parse(e.data);
            if(data_json.type === 'match')
            {
                Self.matchCallback(data_json.openid,data_json.name,data_json.avatarUrl,data_json.gender);
            }
            else if(data_json.type === 'message')
            {
                Self.onRecvFromClientCallback(data_json.message);
            }
        }

        this.ws.onclose = function (e) {
            //当客户端收到服务端发送的关闭连接请求时，触发onclose事件
            console.log("close");
        }

        this.ws.onerror = function (e) {
            //如果出现连接、处理、接收、发送数据失败的时候触发onerror事件
            console.log(error);
        }
    },
    match(openid,callback)
    {
        if(openid ==='' || callback == null) return;
        let obj = {};
        obj.type = 'match';
        obj.openid = openid;
        this.matchCallback = callback;
        this.ws.send(JSON.stringify(obj));
    },
    sendMessage(openid,message)
    {
        if(openid ==='' || message ==='') return;

        let obj = {};
        obj.type = 'message';
        obj.openid = openid;
        obj.message = message;
        this.ws.send(JSON.stringify(obj));
    },
    onRecvFromClient(callback){
        this.onRecvFromClientCallback = callback;
    },
    cancel()
    {
        this.ws.close();
    },
    onOtherPlayerQuit(openid,callback)
    {
        if(openid ==='') return;

        let obj = {};
        obj.type = 'onQuit';
        obj.openid = openid;
        callback = this.onPlayerQuitCallback;
    }
}

module.exports = lockStepClient;