网络资源管理器
实现:
(()=>{
window.g_Net = new class CNet{
constructor(){
this.LoginUrl = "服务器地址:端口";
this.app = null;
this._uid = 0;
}
set uid(val){
this._uid = val;
}
get uid(){
return this._uid;
}
disConnect(){
if(this.app){
this.app.close();
}
this.app = null;
}
//入口函数,启动网络连接
doConnect(url){
this.app = new WebSocket(url);
this.app.onopen = () => {}
this.app.onmessage = (event) => {
this.onMessage(JSON.parse(event.data));
}
this.app.onclose = () => { }
}
//使用信号槽转发数据
onMessage(data){
cc.log("已接受,发送信号");
g_slot.emit(g_Event, data);
}
//C2S发包
send(data) {
if (this.app) {
this.app.send(JSON.stringify(data));
}
}
httpRequest(url, data, cb, isParse = true) { //第四个参数的返回值为true
let xhr = cc.loader.getXMLHttpRequest();//得到一个XMLHttpRequest实例。
if (!data) {//请求时没有数据
xhr.open("GET", url);
} else {
xhr.open("GET", url + "?data=" + JSON.stringify(data));
}
// xhr.onreadystatechange 是当连接状态改变的时候会调用
xhr.onreadystatechange = () => {//听
if (xhr.readyState == 4) {
if (xhr.status == 200) {
if (isParse) {
cb(JSON.parse(xhr.responseText));
} else {
cb(xhr.responseText);
}
} else {
// 重发
}
}
}
xhr.send();
}
}
})()
网络资源管理器知识点:
全局同一由这个脚本进行与服务器交互,功能集中方便使用,并且可以保存个别数据存在全局。