【oops-framework】网络模块WebSocket

功能说明

OopsFramework-网络模块WebSocket处理客户端与服务之间保持长链接通讯。

使用说明

自定义网络通讯数据协议(GZip压缩)
class GameProtocol extends NetProtocolPako { 
    /** 心跳协议 */
    getHearbeat(): NetData {
        return `{"action":"LoginAction","method":"heart","data":"null","isCompress":false,"channelid":1,"callback":"LoginAction_heart"}`;
    }
}
创建一个WebSocket网络连接对象
var net = new NetNodeGame();
var ws = new WebSock();        // WebSocket 网络连接对象
var gp = new GameProtocol();   // 网络通讯协议对象
var gt = new NetGameTips()     // 网络提示对象
net.init(ws, gp, gt);
NetManager.getInstance().setNetNode(net, NetChannelType.Game);
连接游戏服务器
var options = {
    url: `ws://127.0.0.1:3000`,
    autoReconnect: 0            // -1 永久重连,0不自动重连,其他正整数为自动重试次数
}
NetManager.getInstance().connect(options, NetChannelType.Game);
断开游戏服务器连接
NetManager.getInstance().close(undefined, undefined, NetChannelType.Game);
    
游戏服务器提示
export class NetGameTips implements INetworkTips {
    /** 连接提示 */
    connectTips(isShow: boolean): void {
        if (isShow) {
            Logger.logNet("游戏服务器正在连接");
            tips.netInstableOpen();
        }
        else {
            Logger.logNet("游戏服务器连接成功");
            tips.netInstableClose();
            Message.dispatchEvent(GameEvent.GameServerConnected);
        }
    }

    /** 重连接提示 */
    reconnectTips(isShow: boolean): void { 
        if (isShow) {
            Logger.logNet("重连开始");
        }
        else {
            Logger.logNet("重连成功");
        }
    }

    /** 请求提示 */
    requestTips(isShow: boolean): void {
        if (isShow) {
            Logger.logNet("请求数据开始");
        }
        else {
            Logger.logNet("请求数据完成");
        }
    }

    /** 响应错误码提示 */
    responseErrorCode(code: number): void {
        console.log("游戏服务器错误码", code);
    }
}
请求服务器数据
var params: any = {
    playerId: 10000
}

let onComplete = {
    target: this,
    callback: (data: any) => {
        // 服务器返回数据
        console.log(data);
    }
}
// net为NetNodeGame对象
net.req("LoginAction", "loadPlayer", params, onComplete);
监听服务器推送数据
var onComplete = (data: any) => {
    // 服务器返回数据
    console.log(data);
}

// net为NetNodeGame对象
net.setResponeHandler("notify", onComplete, this);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值