onConnected: (event) => void = null;onMessage: (msg) => void = null;: (event) => void = null;onClosed: (event) => void = null;
connect(options: any) {if (this._ws) {if (this._ws.readyState === WebSocket.CONNECTING) {console.log("websocket connecting, wait for a moment...")return false;}}
let url = null;if(options.url) {url = options.url;} else {let ip = options.ip;let port = options.port;let protocol = options.protocol;url = `${protocol}://${ip}:${port}`;}
this._ws = new WebSocket(url);this._ws.binaryType = options.binaryType ? options.binaryType : "arraybuffer";this._ws.onmessage = (event) => {this.onMessage(event.data);};this._ws.onopen = this.onConnected;this._ws. = this.;this._ws.onclose = this.onClosed;return true;}
send(buffer: NetData) {if (this._ws.readyState == WebSocket.OPEN){this._ws.send(buffer);return true;}return false;}
close(code?: number, reason?: string) {this._ws.close;}}
NetworkTips
INetworkTips 提供了非常的接口,重连和请求的开关,框架会在合适的时机调用它们,我们可以继承 INetworkTips 并定制我们的网络相关提示信息,需要注意的是这些接口可能会被**多次调用**。
// 网络提示接口export interface INetworkTips {connectTips(isShow: boolean): void;reconnectTips(isShow: boolean): void;requestTips(isShow: boolean): void;}
NetNode
NetNode 是整个网络框架中最为关键的部分,一个 NetNode 实例表示一个完整的连接对象,基于 NetNode 我们可以方便地进行扩展,它的主要职责有:
连接维护
连接的建立与鉴权(是否鉴权、如何鉴权由用户的回调决定)
断线重连后的数据重发处理
心跳机制确保连接有效(心跳包间隔由配置,心跳包的内容由ProtocolHelper定义)
连接的关闭
数据发送
支持断线重传,超时重传
支持唯一发送(避免同一时间重复发送)
数据接收</