@xmobitea/gn-typescript-client 2.6.1 → 2.6.2-esnext

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/GNServerSettingsConfig.debug.json +1 -0
  2. package/dist/index.js +339 -34478
  3. package/dist/runtime/GNNetwork.js +250 -0
  4. package/dist/runtime/GNNetworkAuthenticateApi.js +122 -0
  5. package/dist/runtime/GNNetworkCharacterPlayerApi.js +968 -0
  6. package/dist/runtime/GNNetworkCloudScriptApi.js +104 -0
  7. package/dist/runtime/GNNetworkContentApi.js +140 -0
  8. package/dist/runtime/GNNetworkDashboardApi.js +170 -0
  9. package/dist/runtime/GNNetworkGamePlayerApi.js +950 -0
  10. package/dist/runtime/GNNetworkGroupApi.js +734 -0
  11. package/dist/runtime/GNNetworkInventoryApi.js +626 -0
  12. package/dist/runtime/GNNetworkMasterPlayerApi.js +1550 -0
  13. package/dist/runtime/GNNetworkMultiplayerApi.js +194 -0
  14. package/dist/runtime/GNNetworkStoreInventoryApi.js +266 -0
  15. package/dist/runtime/common/Action0.js +1 -0
  16. package/dist/runtime/common/Action1.js +1 -0
  17. package/dist/runtime/common/Action2.js +1 -0
  18. package/dist/runtime/common/Action3.js +1 -0
  19. package/dist/runtime/common/Action4.js +1 -0
  20. package/dist/runtime/common/GNData.js +211 -0
  21. package/dist/runtime/config/GNServerSettings.d.ts +8 -0
  22. package/dist/runtime/config/GNServerSettings.js +141 -0
  23. package/dist/runtime/constant/Commands.js +19 -0
  24. package/dist/runtime/constant/EventCode.js +8 -0
  25. package/dist/runtime/constant/OperationCode.js +221 -0
  26. package/dist/runtime/constant/ReturnCode.js +14 -0
  27. package/dist/runtime/constant/enumType/ExecuteResponseStatus.js +8 -0
  28. package/dist/runtime/constant/enumType/FriendStatus.js +7 -0
  29. package/dist/runtime/constant/enumType/GoogleLoginType.js +5 -0
  30. package/dist/runtime/constant/enumType/GroupStatus.js +7 -0
  31. package/dist/runtime/constant/enumType/InvalidMemberType.js +18 -0
  32. package/dist/runtime/constant/enumType/ItemType.js +5 -0
  33. package/dist/runtime/constant/enumType/MatchmakingMemberStatus.js +6 -0
  34. package/dist/runtime/constant/enumType/MatchmakingTicketStatus.js +8 -0
  35. package/dist/runtime/constant/enumType/OwnerType.js +9 -0
  36. package/dist/runtime/constant/enumType/PermissionDataItem.js +5 -0
  37. package/dist/runtime/constant/enumType/PushPlatformType.js +5 -0
  38. package/dist/runtime/constant/enumType/RequestRole.js +6 -0
  39. package/dist/runtime/constant/enumType/RequestType.js +15 -0
  40. package/dist/runtime/constant/enumType/StoreItemType.js +5 -0
  41. package/dist/runtime/constant/enumType/StoreReceiveType.js +8 -0
  42. package/dist/runtime/constant/errorCode/GNErrorCode.js +52 -0
  43. package/dist/runtime/constant/parameterCode/GNParameterCode.d.ts +3 -0
  44. package/dist/runtime/constant/parameterCode/GNParameterCode.js +599 -0
  45. package/dist/runtime/constant/parameterCode/ParameterCode.js +6 -0
  46. package/dist/runtime/entity/DataMember.js +208 -0
  47. package/dist/runtime/entity/GNMetadata.js +11 -0
  48. package/dist/runtime/entity/InvalidMember.js +1 -0
  49. package/dist/runtime/entity/OperationEvent.js +33 -0
  50. package/dist/runtime/entity/OperationHelper.js +23 -0
  51. package/dist/runtime/entity/OperationRequest.js +51 -0
  52. package/dist/runtime/entity/OperationResponse.js +82 -0
  53. package/dist/runtime/entity/models/AuthenticateModels.js +420 -0
  54. package/dist/runtime/entity/models/AuthenticateRequestModels.js +206 -0
  55. package/dist/runtime/entity/models/AuthenticateResponseModels.js +131 -0
  56. package/dist/runtime/entity/models/CharacterPlayerModels.js +1437 -0
  57. package/dist/runtime/entity/models/CharacterPlayerRequestModels.js +1439 -0
  58. package/dist/runtime/entity/models/CharacterPlayerResponseModels.js +376 -0
  59. package/dist/runtime/entity/models/CloudScriptModels.js +197 -0
  60. package/dist/runtime/entity/models/CloudScriptRequestModels.js +143 -0
  61. package/dist/runtime/entity/models/CloudScriptResponseModels.js +40 -0
  62. package/dist/runtime/entity/models/ContentModels.js +203 -0
  63. package/dist/runtime/entity/models/ContentRequestModels.js +197 -0
  64. package/dist/runtime/entity/models/ContentResponseModels.js +54 -0
  65. package/dist/runtime/entity/models/DashboardModels.d.ts +5 -1
  66. package/dist/runtime/entity/models/DashboardModels.js +2991 -0
  67. package/dist/runtime/entity/models/DashboardRequestModels.js +294 -0
  68. package/dist/runtime/entity/models/DashboardResponseModels.js +187 -0
  69. package/dist/runtime/entity/models/GamePlayerModels.js +1591 -0
  70. package/dist/runtime/entity/models/GamePlayerRequestModels.js +1412 -0
  71. package/dist/runtime/entity/models/GamePlayerResponseModels.js +369 -0
  72. package/dist/runtime/entity/models/GenericModels.js +177 -0
  73. package/dist/runtime/entity/models/GroupModels.js +1139 -0
  74. package/dist/runtime/entity/models/GroupRequestModels.js +1088 -0
  75. package/dist/runtime/entity/models/GroupResponseModels.js +285 -0
  76. package/dist/runtime/entity/models/InventoryModels.js +915 -0
  77. package/dist/runtime/entity/models/InventoryRequestModels.js +926 -0
  78. package/dist/runtime/entity/models/InventoryResponseModels.js +243 -0
  79. package/dist/runtime/entity/models/MasterPlayerModels.js +2570 -0
  80. package/dist/runtime/entity/models/MasterPlayerRequestModels.js +2314 -0
  81. package/dist/runtime/entity/models/MasterPlayerResponseModels.js +607 -0
  82. package/dist/runtime/entity/models/MultiplayerModels.js +404 -0
  83. package/dist/runtime/entity/models/MultiplayerRequestModels.js +278 -0
  84. package/dist/runtime/entity/models/MultiplayerResponseModels.js +75 -0
  85. package/dist/runtime/entity/models/StoreInventoryModels.js +797 -0
  86. package/dist/runtime/entity/models/StoreInventoryRequestModels.js +386 -0
  87. package/dist/runtime/entity/models/StoreInventoryResponseModels.js +103 -0
  88. package/dist/runtime/entity/request/CustomOperationRequest.js +24 -0
  89. package/dist/runtime/entity/response/CustomOperationResponse.js +29 -0
  90. package/dist/runtime/entity/response/GetAuthInfoResponse.js +2 -0
  91. package/dist/runtime/entity/response/UploadFileResponse.js +2 -0
  92. package/dist/runtime/helper/CodeHelper.js +61 -0
  93. package/dist/runtime/helper/ConverterService.js +275 -0
  94. package/dist/runtime/helper/GNSupport.js +8 -0
  95. package/dist/runtime/helper/GNUtils.js +72 -0
  96. package/dist/runtime/helper/MessagePackConverterService.js +9 -0
  97. package/dist/runtime/logger/GNDebug.js +29 -0
  98. package/dist/runtime/networking/AuthenticateStatus.js +14 -0
  99. package/dist/runtime/networking/IPeer.js +1 -0
  100. package/dist/runtime/networking/NetworkingPeer.js +182 -0
  101. package/dist/runtime/networking/OperationPending.js +53 -0
  102. package/dist/runtime/networking/PeerBase.js +170 -0
  103. package/dist/runtime/networking/handler/IServerEventHandler.js +13 -0
  104. package/dist/runtime/networking/handler/OnCharacterPlayerFriendUpdateEventHandler.js +39 -0
  105. package/dist/runtime/networking/handler/OnCharacterPlayerGroupUpdateEventHandler.js +39 -0
  106. package/dist/runtime/networking/handler/OnGamePlayerFriendUpdateEventHandler.js +39 -0
  107. package/dist/runtime/networking/handler/OnGamePlayerGroupUpdateEventHandler.js +39 -0
  108. package/dist/runtime/networking/handler/OnGroupMemberUpdateEventHandler.js +35 -0
  109. package/dist/runtime/networking/handler/OnGroupMessageUpdateEventHandler.js +35 -0
  110. package/dist/runtime/networking/http/HttpPeer.js +124 -0
  111. package/dist/runtime/networking/http/NetworkingHttpPeerBase.js +6 -0
  112. package/dist/runtime/networking/http/NetworkingPeerAxiosRequest.js +164 -0
  113. package/dist/runtime/networking/socket/NetworkingPeerSocketIOClient.js +128 -0
  114. package/dist/runtime/networking/socket/NetworkingSocketPeerBase.js +176 -0
  115. package/dist/runtime/networking/socket/SocketPeer.js +108 -0
  116. package/dist/runtime/typescript/ServiceUpdate.js +12 -0
  117. package/package.json +1 -1
  118. package/dist/gn.js.client.js +0 -47199
  119. package/dist/gn.js.client.min.js +0 -2
  120. package/dist/gn.js.client.min.js.LICENSE.txt +0 -14
@@ -0,0 +1,164 @@
1
+ import axios from "axios";
2
+ import { GNHashtable } from "./../../common/GNData";
3
+ import { Commands } from "./../../constant/Commands";
4
+ import { GNSupport } from "./../../helper/GNSupport";
5
+ import { GNDebug } from "./../../logger/GNDebug";
6
+ import { HttpAppResponse, PostType } from "./HttpPeer";
7
+ import { NetworkingHttpPeerBase } from "./NetworkingHttpPeerBase";
8
+ import { GNParameterCode } from "./../../constant/parameterCode/GNParameterCode";
9
+ import { GNNetwork } from "./../../GNNetwork";
10
+ import { MessagePackConverterService } from "./../../helper/MessagePackConverterService";
11
+ export class NetworkingPeerAxiosRequest extends NetworkingHttpPeerBase {
12
+ getRequest(subUri, onHttpAppResponse, timeout, authToken, secretKey, gameId) {
13
+ this.getRequestAxios(subUri, onHttpAppResponse, timeout, authToken, secretKey, gameId);
14
+ }
15
+ postRequest(subUri, param, postType, onHttpAppResponse, timeout, authToken, secretKey, customTags, gameId) {
16
+ this.postRequestAxios(subUri, param, postType, onHttpAppResponse, timeout, authToken, secretKey, customTags, gameId);
17
+ }
18
+ postRequestUpload(subUri, content, filename, mimetype, onHttpAppResponse, timeout) {
19
+ //GNDebug.logWarning("GN JS client sdk does not support upload file yet.");
20
+ // let httpAppResponse = new HttpAppResponse();
21
+ // httpAppResponse.error = "Upload file does not support in GN JS client sdk.";
22
+ // httpAppResponse.statusCode = -1;
23
+ // httpAppResponse.text = "[-3]";
24
+ // if (onHttpAppResponse != null) onHttpAppResponse(httpAppResponse);
25
+ this.postRequestUploadAxios(subUri, content, filename, mimetype, onHttpAppResponse, timeout);
26
+ }
27
+ async getRequestAxios(subUri, onHttpAppResponse, timeout, authToken, secretKey, gameId) {
28
+ let headers = {};
29
+ if (authToken)
30
+ headers[Commands.RequestAuthTokenCmd] = authToken;
31
+ if (secretKey)
32
+ headers[Commands.RequestSecretCmd] = secretKey;
33
+ if (gameId)
34
+ headers[Commands.RequestGameIdCmd] = gameId;
35
+ if (!GNSupport.isBrowser())
36
+ headers[Commands.USER_AGENT] = this.userAgent;
37
+ let httpAppResponse = new HttpAppResponse();
38
+ try {
39
+ let result = await axios.get(this.httpUrl + "/" + subUri, {
40
+ headers: headers,
41
+ timeout: timeout * 1000,
42
+ responseType: "arraybuffer",
43
+ });
44
+ httpAppResponse.statusCode = result.status;
45
+ let buffers = this.toBuffers(result.data);
46
+ httpAppResponse.data = buffers[0];
47
+ httpAppResponse.text = buffers[1];
48
+ }
49
+ catch (error) {
50
+ httpAppResponse.error = error.toString();
51
+ httpAppResponse.statusCode = -1;
52
+ httpAppResponse.text = "[-2]";
53
+ GNDebug.logError(error);
54
+ }
55
+ if (onHttpAppResponse != null)
56
+ onHttpAppResponse(httpAppResponse);
57
+ }
58
+ async postRequestAxios(subUri, param, postType, onHttpAppResponse, timeout, authToken, secretKey, customTags, gameId) {
59
+ let headers = {};
60
+ if (authToken)
61
+ headers[Commands.RequestAuthTokenCmd] = authToken;
62
+ if (secretKey)
63
+ headers[Commands.RequestSecretCmd] = secretKey;
64
+ if (gameId)
65
+ headers[Commands.RequestGameIdCmd] = gameId;
66
+ if (!GNSupport.isBrowser())
67
+ headers[Commands.USER_AGENT] = this.userAgent;
68
+ if (param == null)
69
+ param = new GNHashtable();
70
+ if (customTags != null)
71
+ param.add(GNParameterCode.CustomTags, customTags);
72
+ let body = null;
73
+ if (postType == PostType.Json) {
74
+ let content = param.toData();
75
+ body = content;
76
+ if (!GNSupport.isBrowser()) {
77
+ headers[Commands.CONTENT_LENGTH] = JSON.stringify(body).length;
78
+ headers[Commands.CONTENT_TYPE] = Commands.APPLICATION_JSON;
79
+ }
80
+ headers[Commands.ACCEPT] = Commands.APPLICATION_JSON;
81
+ }
82
+ else if (postType == PostType.MsgPack) {
83
+ let content = param.toData();
84
+ body = Buffer.from(MessagePackConverterService.serialize(content));
85
+ headers[Commands.CONTENT_TYPE] = Commands.APPLICATION_MSGPACK;
86
+ headers[Commands.ACCEPT] = Commands.APPLICATION_MSGPACK;
87
+ if (!GNSupport.isBrowser())
88
+ headers[Commands.CONTENT_LENGTH] = body.length;
89
+ }
90
+ let httpAppResponse = new HttpAppResponse();
91
+ try {
92
+ if (postType == PostType.Json) {
93
+ let result = await axios.post(this.httpUrl + "/" + subUri, body, {
94
+ headers: headers,
95
+ timeout: timeout * 1000,
96
+ responseType: "text",
97
+ });
98
+ httpAppResponse.statusCode = result.status;
99
+ // let buffers = this.toBuffers(result.data);
100
+ // httpAppResponse.data = buffers[0];
101
+ httpAppResponse.text = result.data;
102
+ }
103
+ else {
104
+ let result = await axios.post(this.httpUrl + "/" + subUri, body, {
105
+ headers: headers,
106
+ timeout: timeout * 1000,
107
+ responseType: "arraybuffer",
108
+ });
109
+ httpAppResponse.statusCode = result.status;
110
+ let buffers = this.toBuffers(result.data);
111
+ httpAppResponse.data = buffers[0];
112
+ httpAppResponse.text = buffers[1];
113
+ }
114
+ }
115
+ catch (error) {
116
+ httpAppResponse.error = error.toString();
117
+ httpAppResponse.statusCode = -1;
118
+ httpAppResponse.text = "[-2]";
119
+ GNDebug.logError(error);
120
+ }
121
+ if (onHttpAppResponse != null)
122
+ onHttpAppResponse(httpAppResponse);
123
+ }
124
+ async postRequestUploadAxios(subUri, content, filename, mimetype, onHttpAppResponse, timeout) {
125
+ let formData = new FormData();
126
+ formData.append(Commands.File, new Blob([content], { type: mimetype }), filename);
127
+ let headers = {};
128
+ headers[Commands.RequestAuthTokenCmd] = GNNetwork.getAuthenticateStatus().getAuthToken();
129
+ ;
130
+ // if (!GNSupport.isBrowser()) {
131
+ // headers[Commands.CONTENT_TYPE] = "multipart/form-data";
132
+ // }
133
+ let httpAppResponse = new HttpAppResponse();
134
+ try {
135
+ let result = await axios.post(this.httpUrl + "/" + subUri, formData, {
136
+ headers: headers,
137
+ timeout: timeout * 1000,
138
+ responseType: "arraybuffer",
139
+ });
140
+ httpAppResponse.statusCode = result.status;
141
+ let buffers = this.toBuffers(result.data);
142
+ httpAppResponse.data = buffers[0];
143
+ httpAppResponse.text = buffers[1];
144
+ }
145
+ catch (error) {
146
+ httpAppResponse.error = error.toString();
147
+ httpAppResponse.statusCode = -1;
148
+ httpAppResponse.text = "[-2]";
149
+ GNDebug.logError(error);
150
+ }
151
+ if (onHttpAppResponse != null)
152
+ onHttpAppResponse(httpAppResponse);
153
+ }
154
+ uint8ArrayToString(uint8Array) {
155
+ return decodeURIComponent(escape(String.fromCharCode(...uint8Array)));
156
+ }
157
+ toBuffers(data) {
158
+ if (GNSupport.isBrowser()) {
159
+ data = new Uint8Array(data);
160
+ return [data, this.uint8ArrayToString(data)];
161
+ }
162
+ return [data, data.toString()];
163
+ }
164
+ }
@@ -0,0 +1,128 @@
1
+ import { Commands } from "./../../constant/Commands";
2
+ import { GNDebug } from "./../../logger/GNDebug";
3
+ import { NetworkingSocketPeerBase, SocketPacket } from "./NetworkingSocketPeerBase";
4
+ import { GNNetwork } from "./../../GNNetwork";
5
+ import { OperationHelper } from "./../../entity/OperationHelper";
6
+ import { Manager } from "socket.io-client";
7
+ import { GNParameterCode } from "./../../constant/parameterCode/GNParameterCode";
8
+ import { MessagePackConverterService } from "./../../helper/MessagePackConverterService";
9
+ import { MessageType } from "./../../config/GNServerSettings";
10
+ export class NetworkingPeerSocketIOClient extends NetworkingSocketPeerBase {
11
+ sendRequestAuthSocket() {
12
+ super.sendRequestAuthSocket();
13
+ if (this.clientId) {
14
+ this.socketManager.socket("/").emit(Commands.RequestAuthTokenCmd, GNNetwork.getAuthenticateStatus().getAuthToken());
15
+ }
16
+ ;
17
+ }
18
+ reInitNewSocket() {
19
+ super.reInitNewSocket();
20
+ if (this.socketManager == null) {
21
+ this.socketManager = new Manager(this.url + "/socket.io/", {
22
+ reconnection: true,
23
+ reconnectionDelay: this.reconnectDelay,
24
+ timeout: this.pingTimeout,
25
+ autoConnect: false,
26
+ transports: ["websocket"]
27
+ });
28
+ let socket = this.socketManager.socket("/");
29
+ socket.on("connect", () => {
30
+ this.onConnect();
31
+ });
32
+ socket.on("disconnect", () => {
33
+ this.onDisconnect();
34
+ });
35
+ socket.on("error", (error) => {
36
+ this.onError(error);
37
+ });
38
+ socket.on(Commands.ResponseCmd_MsgPack, (args) => {
39
+ this.onResponseMsgPack(args);
40
+ });
41
+ socket.on(Commands.EventCmd_MsgPack, (args) => {
42
+ this.onEventMsgPack(args);
43
+ });
44
+ socket.on(Commands.ResponseCmd_Json, (args) => {
45
+ this.onResponseJson(args);
46
+ });
47
+ socket.on(Commands.EventCmd_Json, (args) => {
48
+ this.onEventJson(args);
49
+ });
50
+ this.socket = socket;
51
+ }
52
+ }
53
+ onResponseMsgPack(...args) {
54
+ this.responsePacketLst.push(new SocketPacket(args[0], true));
55
+ }
56
+ onEventMsgPack(...args) {
57
+ this.eventPacketLst.push(new SocketPacket(args[0], true));
58
+ }
59
+ onResponseJson(...args) {
60
+ this.responsePacketLst.push(new SocketPacket(args[0], false));
61
+ }
62
+ onEventJson(...args) {
63
+ this.eventPacketLst.push(new SocketPacket(args[0], false));
64
+ }
65
+ onConnect() {
66
+ GNDebug.log("[GN Socket RECV] HandleOpen " + this.socket.id);
67
+ this.clientId = this.socket.id;
68
+ this.onConnectHandler();
69
+ }
70
+ onDisconnect() {
71
+ GNDebug.log("[GN Socket RECV] HandleClose ");
72
+ this.clientId = "";
73
+ this.onDisconnectHandler();
74
+ }
75
+ onError(error) {
76
+ GNDebug.logError(error);
77
+ }
78
+ init(url, reconnectDelay, pingInterval, pingTimeout) {
79
+ super.init(url, reconnectDelay, pingInterval, pingTimeout);
80
+ }
81
+ emit(requestType, requestRole, operationRequest, authToken, secretKey, customTags, gameId) {
82
+ super.emit(requestType, requestRole, operationRequest, authToken, secretKey, customTags, gameId);
83
+ if (this.socketManager == null) {
84
+ // callback here
85
+ return;
86
+ }
87
+ let socket = this.socketManager.socket("/");
88
+ if (socket == null) {
89
+ // callback here
90
+ return;
91
+ }
92
+ if (customTags != null)
93
+ operationRequest.setParameter(GNParameterCode.CustomTags, customTags);
94
+ let dataSend = OperationHelper.toSocketData(requestType, requestRole, operationRequest);
95
+ let gnServerSettings = GNNetwork.getGNServerSettings();
96
+ if (gnServerSettings.getMessageType() == MessageType.Json)
97
+ socket.emit(Commands.RequestCmd_Json, dataSend);
98
+ else
99
+ socket.emit(Commands.RequestCmd_MsgPack, MessagePackConverterService.serialize(dataSend));
100
+ }
101
+ close(_onSocketDisconnect) {
102
+ super.close(_onSocketDisconnect);
103
+ this.isConnected = false;
104
+ if (this.socketManager != null) {
105
+ if (this.socketManager._readyState != "closed") {
106
+ this.socketManager._close();
107
+ return;
108
+ }
109
+ }
110
+ if (this.socket != null)
111
+ this.socket.disconnect();
112
+ GNDebug.log("[GN Socket] Disconnecting via SocketIO client");
113
+ this.onDisconnectHandler();
114
+ }
115
+ connect(_onSocketConnect) {
116
+ super.connect(_onSocketConnect);
117
+ if (this.isConnected) {
118
+ GNDebug.log("[GN Socket] Reconnecting");
119
+ return;
120
+ }
121
+ this.isConnected = true;
122
+ GNDebug.log("[GN Socket] Connecting via SocketIO client");
123
+ if (this.socketManager != null)
124
+ this.socketManager.open();
125
+ if (this.socket != null)
126
+ this.socket.connect();
127
+ }
128
+ }
@@ -0,0 +1,176 @@
1
+ import { MessagePackConverterService } from "./../../helper/MessagePackConverterService";
2
+ import { GNArray } from "./../../common/GNData";
3
+ import { GNNetwork } from "./../../GNNetwork";
4
+ import { GNDebug } from "./../../logger/GNDebug";
5
+ export class SocketPacket {
6
+ constructor(obj, encrypted) {
7
+ this.obj = obj;
8
+ this.encrypted = encrypted;
9
+ }
10
+ }
11
+ class Action0List {
12
+ subscriber(action) {
13
+ this.handlers.push(action);
14
+ }
15
+ unsubscriber(action) {
16
+ let indexOf = this.handlers.indexOf(action);
17
+ if (indexOf != -1)
18
+ this.handlers.splice(indexOf, 1);
19
+ }
20
+ invoke() {
21
+ this.handlers.forEach((a) => {
22
+ if (a != null)
23
+ a();
24
+ });
25
+ }
26
+ constructor() {
27
+ this.handlers = [];
28
+ }
29
+ }
30
+ export class NetworkingSocketPeerBase {
31
+ constructor() {
32
+ this.clientId = "";
33
+ this._onConnectHandler = new Action0List();
34
+ this._onDisconnectHandler = new Action0List();
35
+ }
36
+ init(url, reconnectDelay, pingInterval, pingTimeout) {
37
+ this.responsePacketLst = [];
38
+ this.eventPacketLst = [];
39
+ this.url = url;
40
+ this.reconnectDelay = reconnectDelay;
41
+ this.pingInterval = pingInterval;
42
+ this.pingTimeout = pingTimeout;
43
+ }
44
+ connect(_onSocketConnect) {
45
+ this._onSocketConnect = _onSocketConnect;
46
+ }
47
+ close(_onSocketDisconnect) {
48
+ this._onSocketDisconnect = _onSocketDisconnect;
49
+ }
50
+ sendRequestAuthSocket() {
51
+ }
52
+ send(requestType, requestRole, operationRequest, authToken, secretKey, customTags, gameId) {
53
+ this.emit(requestType, requestRole, operationRequest, authToken, secretKey, customTags, gameId);
54
+ }
55
+ emit(requestType, requestRole, operationRequest, authToken, secretKey, customTags, gameId) {
56
+ }
57
+ reInitNewSocket() {
58
+ }
59
+ setOnConnectHandler(_onConnectHandler) {
60
+ this._onConnectHandler.subscriber(_onConnectHandler);
61
+ }
62
+ setOnDisconnectHandler(_onDisconnectHandler) {
63
+ this._onDisconnectHandler.subscriber(_onDisconnectHandler);
64
+ }
65
+ removeOnConnectHandler(_onConnectHandler) {
66
+ this._onConnectHandler.unsubscriber(_onConnectHandler);
67
+ }
68
+ removeOnDisconnectHandler(_onDisconnectHandler) {
69
+ this._onDisconnectHandler.unsubscriber(_onDisconnectHandler);
70
+ }
71
+ onConnectHandler() {
72
+ this._onConnectHandler.invoke();
73
+ let authToken = GNNetwork.getAuthenticateStatus().getAuthToken();
74
+ if (authToken != null) {
75
+ this.sendRequestAuthSocket();
76
+ }
77
+ if (this._onSocketConnect != null) {
78
+ this._onSocketConnect();
79
+ this._onSocketConnect = null;
80
+ }
81
+ }
82
+ onDisconnectHandler() {
83
+ this._onDisconnectHandler.invoke();
84
+ if (this._onSocketDisconnect != null) {
85
+ this._onSocketDisconnect();
86
+ this._onSocketDisconnect = null;
87
+ }
88
+ }
89
+ setOnEventHandler(_onEventHandler) {
90
+ this._onEventHandler = _onEventHandler;
91
+ }
92
+ onEventHandler(obj, isEncrypted) {
93
+ if (this._onEventHandler != null)
94
+ this._onEventHandler(obj, isEncrypted);
95
+ }
96
+ setOnResponseHandler(_onResponseHandler) {
97
+ this._onResponseHandler = _onResponseHandler;
98
+ }
99
+ onResponseHandler(obj, isEncrypted) {
100
+ if (this._onResponseHandler != null)
101
+ this._onResponseHandler(obj, isEncrypted);
102
+ }
103
+ static fromMsgList(objects) {
104
+ let answer = [];
105
+ for (let i = 0; i < objects.length; i++) {
106
+ let value = objects[i];
107
+ answer.push(value);
108
+ }
109
+ return answer;
110
+ }
111
+ static fromJsonList(objects) {
112
+ return objects;
113
+ }
114
+ service() {
115
+ if (this.responsePacketLst.length > 0) {
116
+ for (let i = 0; i < this.responsePacketLst.length; i++) {
117
+ let responsePacket = this.responsePacketLst[i];
118
+ if (responsePacket.encrypted) {
119
+ try {
120
+ let iList = MessagePackConverterService.deserialize(responsePacket.obj);
121
+ let gnArray = GNArray.builder()
122
+ .addAll(NetworkingSocketPeerBase.fromMsgList(iList))
123
+ .build();
124
+ this.onResponseHandler(gnArray, responsePacket.encrypted);
125
+ }
126
+ catch (ex) {
127
+ GNDebug.logException(ex);
128
+ }
129
+ }
130
+ else {
131
+ try {
132
+ let iList = responsePacket.obj;
133
+ let gnArray = GNArray.builder()
134
+ .addAll(NetworkingSocketPeerBase.fromJsonList(iList))
135
+ .build();
136
+ this.onResponseHandler(gnArray, responsePacket.encrypted);
137
+ }
138
+ catch (ex) {
139
+ GNDebug.logException(ex);
140
+ }
141
+ }
142
+ }
143
+ this.responsePacketLst.length = 0;
144
+ }
145
+ if (this.eventPacketLst.length > 0) {
146
+ for (let i = 0; i < this.eventPacketLst.length; i++) {
147
+ let eventPacket = this.eventPacketLst[i];
148
+ if (eventPacket.encrypted) {
149
+ try {
150
+ let iList = MessagePackConverterService.deserialize(eventPacket.obj);
151
+ let gnArray = GNArray.builder()
152
+ .addAll(NetworkingSocketPeerBase.fromMsgList(iList))
153
+ .build();
154
+ this.onEventHandler(gnArray, eventPacket.encrypted);
155
+ }
156
+ catch (ex) {
157
+ GNDebug.logException(ex);
158
+ }
159
+ }
160
+ else {
161
+ try {
162
+ let iList = eventPacket.obj;
163
+ let gnArray = GNArray.builder()
164
+ .addAll(NetworkingSocketPeerBase.fromJsonList(iList))
165
+ .build();
166
+ this.onEventHandler(gnArray, eventPacket.encrypted);
167
+ }
168
+ catch (ex) {
169
+ GNDebug.logException(ex);
170
+ }
171
+ }
172
+ }
173
+ this.eventPacketLst.length = 0;
174
+ }
175
+ }
176
+ }
@@ -0,0 +1,108 @@
1
+ import { OperationEvent } from "./../../entity/OperationEvent";
2
+ import { GNNetwork } from "./../../GNNetwork";
3
+ import { GNDebug } from "./../../logger/GNDebug";
4
+ import { IServerEventHandler } from "./../handler/IServerEventHandler";
5
+ import { NetworkingPeerSocketIOClient } from "./NetworkingPeerSocketIOClient";
6
+ import { PeerBase } from "./../PeerBase";
7
+ export class SocketPeer extends PeerBase {
8
+ getClientId() {
9
+ return this.networkingSocketPeerBase.clientId;
10
+ }
11
+ isConnected() {
12
+ return this.networkingSocketPeerBase.isWsConnected;
13
+ }
14
+ sendRequestAuthSocket() {
15
+ this.networkingSocketPeerBase.sendRequestAuthSocket();
16
+ }
17
+ subscriberServerEventHandler() {
18
+ this.serverEventHandlersDict = {};
19
+ let serverEventHandlers = IServerEventHandler.getImplementations();
20
+ for (let i = 0; i < serverEventHandlers.length; i++) {
21
+ let serverEventHandler = new serverEventHandlers[i]();
22
+ if (serverEventHandler != null) {
23
+ let serverEventHandlers2 = this.serverEventHandlersDict[serverEventHandler.getEventCode()];
24
+ if (serverEventHandlers2 == null) {
25
+ serverEventHandlers2 = [];
26
+ this.serverEventHandlersDict[serverEventHandler.getEventCode()] = serverEventHandlers2;
27
+ }
28
+ serverEventHandlers2.push(serverEventHandler);
29
+ }
30
+ }
31
+ }
32
+ subscriberAServerEventHandler(serverEventHandler) {
33
+ let serverEventHandlers2 = this.serverEventHandlersDict[serverEventHandler.getEventCode()];
34
+ if (serverEventHandlers2 == null) {
35
+ serverEventHandlers2 = [];
36
+ this.serverEventHandlersDict[serverEventHandler.getEventCode()] = serverEventHandlers2;
37
+ }
38
+ serverEventHandlers2.push(serverEventHandler);
39
+ }
40
+ initGNSocketObject() {
41
+ let gnServerSettings = GNNetwork.getGNServerSettings();
42
+ if (gnServerSettings == null)
43
+ throw new Error("Where is GN Server Settings");
44
+ this.isUse = gnServerSettings.isUseSocket();
45
+ this.networkingSocketPeerBase = new NetworkingPeerSocketIOClient();
46
+ this.networkingSocketPeerBase.init(gnServerSettings.getSocketUrl(), gnServerSettings.getReconnectDelay(), gnServerSettings.getPingInterval(), gnServerSettings.getPingTimeout());
47
+ this.networkingSocketPeerBase.reInitNewSocket();
48
+ let thiz = this;
49
+ this.networkingSocketPeerBase.setOnEventHandler((t1, t2) => {
50
+ thiz.onEventHandler(t1, t2);
51
+ });
52
+ this.networkingSocketPeerBase.setOnResponseHandler((t1, t2) => {
53
+ thiz.onResponseHandler(t1, t2);
54
+ });
55
+ this.subscriberServerEventHandler();
56
+ }
57
+ setOnConnectHandler(_onConnectHandler) {
58
+ this.networkingSocketPeerBase.setOnConnectHandler(_onConnectHandler);
59
+ }
60
+ setOnDisconnectHandler(_onDisconnectHandler) {
61
+ this.networkingSocketPeerBase.setOnDisconnectHandler(_onDisconnectHandler);
62
+ }
63
+ removeOnConnectHandler(_onConnectHandler) {
64
+ this.networkingSocketPeerBase.removeOnConnectHandler(_onConnectHandler);
65
+ }
66
+ removeOnDisconnectHandler(_onDisconnectHandler) {
67
+ this.networkingSocketPeerBase.removeOnDisconnectHandler(_onDisconnectHandler);
68
+ }
69
+ connect(_onSocketConnect) {
70
+ this.networkingSocketPeerBase.connect(_onSocketConnect);
71
+ }
72
+ disconnect(_onSocketDisconnect) {
73
+ this.networkingSocketPeerBase.close(_onSocketDisconnect);
74
+ }
75
+ setOnEventHandler(_onEventHandler) {
76
+ this._onEventHandler = _onEventHandler;
77
+ }
78
+ send(operationPending) {
79
+ super.send(operationPending);
80
+ GNDebug.log("[GN Socket SEND] " + operationPending.getOperationRequest().toString());
81
+ let authToken = operationPending.getAuthToken();
82
+ let secretKey = operationPending.getSecretKey();
83
+ let gameId = operationPending.getGameId();
84
+ let customTags = operationPending.getCustomTags();
85
+ this.networkingSocketPeerBase.send(operationPending.getRequestType(), operationPending.getRequestRole(), operationPending.getOperationRequest(), authToken, secretKey, customTags, gameId);
86
+ }
87
+ onEnqueue(operationPending) {
88
+ GNDebug.log("[GN Socket ENQUEUE] " + operationPending.getOperationRequest().toString());
89
+ }
90
+ onEventHandler(obj, isEncrypted) {
91
+ let eventCode = obj.getNumber(0);
92
+ let operationEvent = new OperationEvent(eventCode, obj.getGNHashtable(1));
93
+ operationEvent.setEncrypted(isEncrypted);
94
+ GNDebug.log("[GN Socket EVENT] " + operationEvent.toString());
95
+ if (this._onEventHandler != null)
96
+ this._onEventHandler(operationEvent);
97
+ let serverEventHandlers = this.serverEventHandlersDict[eventCode];
98
+ serverEventHandlers.forEach(serverEventHandler => {
99
+ if (serverEventHandler != null) {
100
+ serverEventHandler.handle(operationEvent);
101
+ }
102
+ });
103
+ }
104
+ service() {
105
+ super.service();
106
+ this.networkingSocketPeerBase.service();
107
+ }
108
+ }
@@ -0,0 +1,12 @@
1
+ export class ServiceUpdate {
2
+ run() {
3
+ let thiz = this;
4
+ setInterval(() => {
5
+ thiz.update();
6
+ }, 50);
7
+ }
8
+ update() {
9
+ if (this.peer != null)
10
+ this.peer.service();
11
+ }
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xmobitea/gn-typescript-client",
3
- "version": "2.6.1",
3
+ "version": "2.6.2-esnext",
4
4
  "description": "GearN Typescript Client SDK by XmobiTea (Pro)",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",