const { ccclass, property } = cc._decorator;
/**
* 网络连接状态
*/
export enum NetWorkState {
NetWorkState_NONE,
NetWorkState_CONNECTING,
NetWorkState_CONNECTED,
NetWorkState_ERROR,
NetWorkState_CLOSE,
NetWorkState_TIMEOUT,
NetWorkState_MAX
}
@ccclass
export class NetWork {
private static m_sInstance: NetWork = null;
private m_cDstIP: string = "";
private m_pSocket: WebSocket = null;
private m_eNetWorkState: NetWorkState = NetWorkState.NetWorkState_NONE;
private m_vDelegates: any[] = [];
private m_bReciveHeadMsg: boolean = false;
private m_nHeartbeatNum: any = -1; // 心跳包句柄
private m_nConnectNum: any = -1; // 重连句柄
private m_bIsSendHeard: boolean = true;
private m_vMessageCallBack: any[] = [];
private m_nConnectCount: number = 0;//当前连接的次数(用于判断重连的提示,比如连接三次都没连接上就提示玩家检查网络)
private m_bIsHoldClose: boolean = false;//是否是手动关闭
private m_nforgroundCount: number = -1;
private m_nConnectGameServerNum: number = -1;//连接逻辑服务器的句柄
private m_nConnectGameServerNum_1: number = -1;//连接逻辑服务器的句柄
/**
* 连接地址
*/
private socketIP: string = "ws://192.168.0.127:8080";
public getSocketIP(): string {
return this.socketIP;
}
/**
* 设置是否自动连接
* @param is 是否自动连接
*/
public setAutoConnect(is: boolean): void {
this.m_bIsAutoConnect = is;
}
private forgroundConnect(): void {
if (this.m_nforgroundCount != -1) {
clearTimeout(this.m_nforgroundCount);
}
this.m_nforgroundCount = setTimeout(() => {
this.socketIP && this.connect(this.socketIP, false);
}, 500);
}
/**
* 应用程序进入前台
*/
private applocationEnterForeground(): void {
console.log("applocationEnterForeground");
this.forgroundConnect();
}
/**
* 应用程序进入后台
*/
private applocationEnterBackground(): void {
console.log("applocationEnterBackground");
this.closeNetWork(true);
}
pu
cocoscreator websocket示例
最新推荐文章于 2024-07-29 22:14:57 发布
本文介绍了如何在CocosCreator中使用WebSocket进行消息监听和处理,包括如何添加监听、移除监听以及重写`onMsg`函数来接收和处理接收到的消息。
摘要由CSDN通过智能技术生成