Files
fc/dev/project/assets/Scripts/zbridge/remote/bridge.remote.js
T
2026-05-23 22:10:14 +08:00

175 lines
4.9 KiB
JavaScript

/*******************************************************************************
*
* Nx远程配置服务
*
*
*
* 2021.12.10
******************************************************************************/
const ERR = require( "error" );
const MOD = require( "nx.mod" );
var HMRemote = cc.Class( {
extends: MOD,
name: "HMRemote",
// 初始化
initialize: function( _args ) {
// USPER
this._super( _args );
// 插件
nx.plugin.add( this, [ "view" ] );
// 视图代理初始化
this.vattach( "Bridge" );
// 访问接口(设置)
nx.bridge.remote = this;
return true;
},
// 销毁
uninitialize: function() {
// 访问接口(关闭)
nx.bridge.remote = null;
// USPER
return this._super();
},
// 获取配置
fetch: function( _cb ) {
// 包信息
// nx.debug( "$SDK:设备ID:", nx.sdk.getDeviceID() );
// nx.debug( "$SDK:包版本:", nx.sdk.getPackVersion() );
// nx.frame.vset( "Platform", nx.getPlatform() );
// nx.frame.vset( "DeviceID", nx.sdk.getDeviceID() );
// nx.frame.vset( "ApkVersion", nx.sdk.getPackVersion() );
// nx.frame.vset( "DebugOpen", CC_DEBUG );
// let packArgs = nx.sdk.getPackArgs();
// this.vset( "gname", packArgs.gname );
// this.vset( "channel", packArgs.cnn );
// this.vset( "logLv", parseInt( packArgs.log ) || 0 );
// this.vset( "gm", packArgs.gm == "1" );
// this.vset( "ssl", parseInt( packArgs.ssl ) == 1 );
// PHP远程路径(本地缓存+包内原始地址)
let urls = [];
let cache = nx.storage.get( "FCPHPS" );
if( nx.dt.strNEmpty( cache ) ) {
urls = nx.dt.dejson( cache );
}
let nat = this.vget( "phpUrls" );
if( nx.dt.strNEmpty( nat ) ) {
let arr = nat.split( "#" );
urls = urls.concat( arr );
}
if( nx.dt.arrEmpty( urls ) ) {
nx.error( "$Remote:PHP远程路径未指定!" );
nx.dt.fnInvoke( _cb, nx.genError( ERR.CLI.FailedRemote ) );
return;
}
// 轮询请求远程配置
let self = this;
let loop = function() {
// 全部失败
if( nx.dt.arrEmpty( urls ) ) {
nx.error( "$Remote:轮询请求远程配置失败!" );
nx.dt.fnInvoke( _cb, nx.genError( ERR.CLI.FailedRemote ) );
return;
}
let header = self.vget( "ssl" ) ? "https" : "http";
let url = header + "://" + urls.shift() + "/url_config.php" +
"?platform=" + nx.frame.vget( "Platform" ) +
"&chanleId=" + self.vget( "channel" ) +
"&time=" + cc.sys.now();
nx.web.get( url, {}, ( _code, _msg ) => {
// 失败
if( _code != ERR.OK || nx.dt.objEmpty( _msg ) ) {
loop();
return;
}
// 成功
self.vset( "svrsURL", _msg.SERVER_LIST_URL || "" );
self.vset( "dataURL", _msg.DATA_URL || "" );
self.vset( "payURL", _msg.PAY_URL || "" );
self.vset( "noticeURL", _msg.NOTICE_URL || "" );
self.vset( "bugURL", _msg.BUG_URL || "" );
if( nx.dt.arrNEmpty( _msg.CDN_URL ) ) {
nx.storage.set( "FCPHPS", nx.dt.enjson( _msg.CDN_URL ) );
}
if( nx.mTrace ) {
nx.mTrace.setRouter( _msg.DOT_URL );
}
nx.dt.fnInvoke( _cb );
}, false );
};
loop();
},
// 请求服务器列表
queryServers: function( _account, _sid, _all, _cb ) {
let svr = this.vget( "svrsURL" );
let url = svr +
"?platform=" + nx.frame.vget( "Platform" ) +
"&chanleId=" + this.vget( "channel" ) +
"&account=" + _account +
"&srvid=" + _sid +
"&start=" + 0 +
"&num=" + ( _all ? 0 : 1 ) +
"&time=" + client.socket.getTime() +
"&type=json";
nx.web.get( url, {}, ( _code, _msg ) => {
// 失败
if( _code != ERR.OK || nx.dt.objEmpty( _msg ) ) {
nx.dt.fnInvoke( _cb, nx.genError( ERR.CLI.FailedRemote ) );
return;
}
// 成功
// this.vset( "platform", _msg.data.default_zone.platform );
nx.dt.fnInvoke( _cb, ERR.OK, _msg );
}, false );
},
// 是否远程原生模式(更新同步)
isRemoteNative: function() {
if( cc.sys.isNative && !cc.sys.isBrowser ) {
return true;
}
return false;
},
} );
module.exports = HMRemote;