NetUtil.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { WECHAT } from 'cc/env';
  2. import { ApiReturn, HttpClientTransportOptions, HttpClient as HttpClient_Browser, TsrpcError, WsClient as WsClient_Browser } from 'tsrpc-browser';
  3. import { HttpClient as HttpClient_Miniapp, WsClient as WsClient_Miniapp } from 'tsrpc-miniapp';
  4. import { ServiceType, serviceProto } from '../shared/protocols/serviceProto_public';
  5. import { assetManager, TextAsset } from 'cc';
  6. import { GameServerListFileURL, GameServerURLs } from './FrontConfig';
  7. /** 网络请求相关 */
  8. export class NetUtil {
  9. static createHttpClient(serverUrl): HttpClient_Browser<ServiceType> | HttpClient_Miniapp<ServiceType> {
  10. return new (WECHAT ? HttpClient_Miniapp : HttpClient_Browser)(serviceProto, {
  11. server: serverUrl,
  12. // json: true,
  13. logger: console
  14. });
  15. }
  16. /** World Server */
  17. static createWebsocketClient(serverUrl: string): WsClient_Browser<ServiceType> | WsClient_Miniapp<ServiceType> {
  18. let client = new (WECHAT ? WsClient_Miniapp : WsClient_Browser)(serviceProto, {
  19. server: serverUrl,
  20. heartbeat: {
  21. interval: 5000,
  22. timeout: 5000
  23. },
  24. // json: true,
  25. logger: console,
  26. logMsg: false
  27. });
  28. // FLOWS
  29. // TODO
  30. return client;
  31. }
  32. public static async getGameServerList(): Promise<Readonly<string[]>> {
  33. /**
  34. * @en if defined, load server list from remote file.
  35. * @zh 如果配置了此值,则优先从此值加载
  36. */
  37. if (GameServerListFileURL) {
  38. return new Promise((resolve, reject) => {
  39. assetManager.loadRemote(GameServerListFileURL, TextAsset, (err, textAsset: TextAsset) => {
  40. let serverUrls = GameServerURLs;
  41. try {
  42. serverUrls = JSON.parse(textAsset.text);
  43. } catch (error) {
  44. }
  45. resolve(serverUrls);
  46. });
  47. });
  48. }
  49. return GameServerURLs;
  50. }
  51. }