mirror of
https://github.com/Leo501/CocosCreatorTutorial.git
synced 2026-05-08 14:48:40 +08:00
100 lines
2.4 KiB
JavaScript
100 lines
2.4 KiB
JavaScript
let netConfig = {};
|
|
netConfig.host = 'localhost';
|
|
netConfig.port = '8181';
|
|
|
|
var NetControl = {
|
|
_sock: {}, //当前的webSocket的对象
|
|
sendTempArr: [], //发送数组
|
|
handlers: [], //
|
|
connect() {
|
|
if (this._sock.readyState !== 1) {
|
|
//重新连接
|
|
this._sock = new WebSocket('ws://' + netConfig.host + ":" + netConfig.port);
|
|
this._sock.onopen = this._onOpen.bind(this);
|
|
this._sock.onclose = this._onClose.bind(this);
|
|
this._sock.onmessage = this._onMessage.bind(this);
|
|
}
|
|
return this;
|
|
},
|
|
|
|
_onOpen() {
|
|
console.log('_onOpen');
|
|
this.sendTempArr.forEach((msg) => {
|
|
console.log('_onOpen ,send ');
|
|
this._send(msg);
|
|
});
|
|
},
|
|
|
|
_onClose(err) {
|
|
console.log('_onClose', err);
|
|
},
|
|
|
|
_onMessage(obj) {
|
|
console.log('_onMessage', obj.data, obj);
|
|
let event = JSON.parse(obj.data);
|
|
let handler = this.handlers[event.event];
|
|
if (handler) {
|
|
handler(event.data);
|
|
}
|
|
},
|
|
|
|
_send(msg) {
|
|
try {
|
|
this._sock.send(msg);
|
|
} catch (error) {
|
|
console.log('_send error=', error);
|
|
}
|
|
},
|
|
|
|
send(event, data) {
|
|
let newData = JSON.stringify({
|
|
event: event,
|
|
data: data
|
|
});
|
|
//是否能发送
|
|
if (this._sock.readyState !== 1) {
|
|
console.log('sendTempArr');
|
|
this.sendTempArr.push(newData);
|
|
return;
|
|
}
|
|
this._send(newData);
|
|
},
|
|
|
|
/**
|
|
* 同一事件,只会注册一次。
|
|
* 如果出现多个,只回调第一个
|
|
* @param {*} event
|
|
* @param {*} fn
|
|
*/
|
|
addHandler(event, fn) {
|
|
console.log('addHandler', event);
|
|
if (this.handlers[event]) {
|
|
console.log("event:" + event + "' handler has been registered.");
|
|
return;
|
|
}
|
|
|
|
var handler = function (data) {
|
|
//console.log(event + "(" + typeof(data) + "):" + (data? data.toString():"null"));
|
|
fn(data);
|
|
};
|
|
|
|
this.handlers[event] = handler;
|
|
},
|
|
|
|
removeHandler(event) {
|
|
console.log('removeHandler', event);
|
|
let handler = this.handlers[event];
|
|
if (handler) {
|
|
handler = null;
|
|
}
|
|
},
|
|
|
|
removeAllHandler() {
|
|
console.log('removeAllHandler', event);
|
|
this.handlers = {};
|
|
|
|
},
|
|
|
|
};
|
|
|
|
module.exports = NetControl; |