@simplysm/service-client 13.0.99 → 14.0.1

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 (55) hide show
  1. package/dist/features/event-client.d.ts.map +1 -1
  2. package/dist/features/event-client.js +75 -67
  3. package/dist/features/event-client.js.map +1 -6
  4. package/dist/features/file-client.js +41 -39
  5. package/dist/features/file-client.js.map +1 -6
  6. package/dist/features/orm/orm-client-connector.js +37 -38
  7. package/dist/features/orm/orm-client-connector.js.map +1 -6
  8. package/dist/features/orm/orm-client-db-context-executor.d.ts.map +1 -1
  9. package/dist/features/orm/orm-client-db-context-executor.js +60 -60
  10. package/dist/features/orm/orm-client-db-context-executor.js.map +1 -6
  11. package/dist/features/orm/orm-connect-options.js +2 -1
  12. package/dist/features/orm/orm-connect-options.js.map +1 -6
  13. package/dist/index.js +6 -1
  14. package/dist/index.js.map +1 -6
  15. package/dist/protocol/client-protocol-wrapper.d.ts +1 -0
  16. package/dist/protocol/client-protocol-wrapper.d.ts.map +1 -1
  17. package/dist/protocol/client-protocol-wrapper.js +92 -70
  18. package/dist/protocol/client-protocol-wrapper.js.map +1 -6
  19. package/dist/service-client.d.ts +2 -0
  20. package/dist/service-client.d.ts.map +1 -1
  21. package/dist/service-client.js +113 -111
  22. package/dist/service-client.js.map +1 -6
  23. package/dist/transport/service-transport.js +121 -104
  24. package/dist/transport/service-transport.js.map +1 -6
  25. package/dist/transport/socket-provider.js +180 -155
  26. package/dist/transport/socket-provider.js.map +1 -6
  27. package/dist/types/connection-options.d.ts +1 -1
  28. package/dist/types/connection-options.d.ts.map +1 -1
  29. package/dist/types/connection-options.js +2 -1
  30. package/dist/types/connection-options.js.map +1 -6
  31. package/dist/types/progress.types.d.ts +1 -0
  32. package/dist/types/progress.types.d.ts.map +1 -1
  33. package/dist/types/progress.types.js +2 -1
  34. package/dist/types/progress.types.js.map +1 -6
  35. package/dist/workers/client-protocol.worker.js +38 -24
  36. package/dist/workers/client-protocol.worker.js.map +1 -6
  37. package/package.json +16 -9
  38. package/src/features/event-client.ts +19 -17
  39. package/src/features/file-client.ts +5 -5
  40. package/src/features/orm/orm-client-connector.ts +2 -2
  41. package/src/features/orm/orm-client-db-context-executor.ts +8 -7
  42. package/src/index.ts +5 -5
  43. package/src/protocol/client-protocol-wrapper.ts +24 -19
  44. package/src/service-client.ts +22 -15
  45. package/src/transport/service-transport.ts +19 -19
  46. package/src/transport/socket-provider.ts +38 -38
  47. package/src/types/connection-options.ts +1 -1
  48. package/src/types/progress.types.ts +1 -0
  49. package/src/workers/client-protocol.worker.ts +9 -9
  50. package/README.md +0 -126
  51. package/docs/features.md +0 -143
  52. package/docs/protocol.md +0 -29
  53. package/docs/service-client.md +0 -93
  54. package/docs/transport.md +0 -96
  55. package/docs/types.md +0 -55
@@ -1,112 +1,129 @@
1
1
  import { EventEmitter, Uuid } from "@simplysm/core-common";
2
- function createServiceTransport(socket, protocol) {
3
- const emitter = new EventEmitter();
4
- const pendingRequests = /* @__PURE__ */ new Map();
5
- const responseProgressTotalSize = /* @__PURE__ */ new Map();
6
- socket.on("message", onMessage);
7
- socket.on("state", (state) => {
8
- if (state === "closed" || state === "reconnecting") {
9
- cancelAllRequests("Socket connection lost");
10
- }
11
- });
12
- async function send(message, progress) {
13
- var _a, _b;
14
- const uuid = Uuid.generate().toString();
15
- const responsePromise = new Promise((resolve, reject) => {
16
- pendingRequests.set(uuid, { resolve, reject, progress });
17
- });
18
- responsePromise.catch(() => {
2
+ export function createServiceTransport(socket, protocol) {
3
+ const emitter = new EventEmitter();
4
+ const pendingRequests = new Map();
5
+ // 응답 progress totalSize 저장 (완료 100% 전송용)
6
+ const responseProgressTotalSize = new Map();
7
+ socket.on("message", onMessage);
8
+ // 소켓 연결 끊김 메모리 해제를 위해 모든 대기 중인 요청을 reject
9
+ socket.on("state", (state) => {
10
+ if (state === "closed" || state === "reconnecting") {
11
+ cancelAllRequests("소켓 연결이 끊어졌습니다");
12
+ }
19
13
  });
20
- try {
21
- const { chunks, totalSize } = await protocol.encode(uuid, message);
22
- if (chunks.length > 1) {
23
- (_a = progress == null ? void 0 : progress.request) == null ? void 0 : _a.call(progress, {
24
- uuid,
25
- totalSize,
26
- completedSize: 0
14
+ async function send(message, progress) {
15
+ const uuid = Uuid.generate().toString();
16
+ // 응답 대기 시작 (안전을 위해 요청 전송 전에 리스너 등록)
17
+ const responsePromise = new Promise((resolve, reject) => {
18
+ pendingRequests.set(uuid, { resolve, reject, progress });
27
19
  });
28
- }
29
- for (const chunk of chunks) {
30
- await socket.send(chunk);
31
- }
32
- } catch (err) {
33
- (_b = pendingRequests.get(uuid)) == null ? void 0 : _b.reject(err);
34
- pendingRequests.delete(uuid);
35
- throw err;
20
+ // Promise가 고아가 되었을 때 unhandled rejection 방지 (예: HMR 정리 중)
21
+ responsePromise.catch(() => { });
22
+ // 요청 전송
23
+ try {
24
+ const { chunks, totalSize } = await protocol.encode(uuid, message);
25
+ // progress 초기화
26
+ if (chunks.length > 1) {
27
+ progress?.request?.({
28
+ uuid,
29
+ totalSize,
30
+ completedSize: 0,
31
+ });
32
+ }
33
+ // 전송
34
+ for (const chunk of chunks) {
35
+ await socket.send(chunk);
36
+ }
37
+ }
38
+ catch (err) {
39
+ // 전송 실패 시 즉시 정리
40
+ pendingRequests.get(uuid)?.reject(err);
41
+ pendingRequests.delete(uuid);
42
+ throw err;
43
+ }
44
+ // 응답 결과 반환
45
+ return responsePromise;
36
46
  }
37
- return responsePromise;
38
- }
39
- async function onMessage(buf) {
40
- var _a, _b, _c, _d, _e, _f;
41
- const decoded = await protocol.decode(buf);
42
- const listenerInfo = pendingRequests.get(decoded.uuid);
43
- try {
44
- if (decoded.type === "progress") {
45
- responseProgressTotalSize.set(decoded.uuid, decoded.totalSize);
46
- (_b = (_a = listenerInfo == null ? void 0 : listenerInfo.progress) == null ? void 0 : _a.response) == null ? void 0 : _b.call(_a, {
47
- uuid: decoded.uuid,
48
- totalSize: decoded.totalSize,
49
- completedSize: decoded.completedSize
50
- });
51
- } else {
52
- if (decoded.message.name === "progress") {
53
- const body = decoded.message.body;
54
- (_d = (_c = listenerInfo == null ? void 0 : listenerInfo.progress) == null ? void 0 : _c.request) == null ? void 0 : _d.call(_c, {
55
- uuid: decoded.uuid,
56
- totalSize: body.totalSize,
57
- completedSize: body.completedSize
58
- });
59
- } else if (decoded.message.name === "response") {
60
- const totalSize = responseProgressTotalSize.get(decoded.uuid);
61
- if (totalSize != null) {
62
- responseProgressTotalSize.delete(decoded.uuid);
63
- (_f = (_e = listenerInfo == null ? void 0 : listenerInfo.progress) == null ? void 0 : _e.response) == null ? void 0 : _f.call(_e, {
64
- uuid: decoded.uuid,
65
- totalSize,
66
- completedSize: totalSize
67
- });
68
- }
69
- pendingRequests.delete(decoded.uuid);
70
- listenerInfo == null ? void 0 : listenerInfo.resolve(decoded.message.body);
71
- } else if (decoded.message.name === "error") {
72
- responseProgressTotalSize.delete(decoded.uuid);
73
- pendingRequests.delete(decoded.uuid);
74
- listenerInfo == null ? void 0 : listenerInfo.reject(toError(decoded.message.body));
75
- } else if (decoded.message.name === "reload") {
76
- const body = decoded.message.body;
77
- if (socket.clientName === body.clientName) {
78
- emitter.emit("reload", body.changedFileSet);
79
- }
80
- } else if (decoded.message.name === "evt:on") {
81
- const body = decoded.message.body;
82
- emitter.emit("event", { keys: body.keys, data: body.data });
83
- } else {
84
- throw new Error("Invalid message received from server.");
47
+ async function onMessage(buf) {
48
+ const decoded = await protocol.decode(buf);
49
+ const listenerInfo = pendingRequests.get(decoded.uuid);
50
+ try {
51
+ if (decoded.type === "progress") {
52
+ // totalSize 기억 (완료 시 100% 전송용)
53
+ responseProgressTotalSize.set(decoded.uuid, decoded.totalSize);
54
+ listenerInfo?.progress?.response?.({
55
+ uuid: decoded.uuid,
56
+ totalSize: decoded.totalSize,
57
+ completedSize: decoded.completedSize,
58
+ });
59
+ }
60
+ else {
61
+ if (decoded.message.name === "progress") {
62
+ const body = decoded.message.body;
63
+ listenerInfo?.progress?.server?.({
64
+ uuid: decoded.uuid,
65
+ totalSize: body.totalSize,
66
+ completedSize: body.completedSize,
67
+ });
68
+ }
69
+ else if (decoded.message.name === "response") {
70
+ // 분할 메시지였을 경우 100% progress 전송
71
+ const totalSize = responseProgressTotalSize.get(decoded.uuid);
72
+ if (totalSize != null) {
73
+ responseProgressTotalSize.delete(decoded.uuid);
74
+ listenerInfo?.progress?.response?.({
75
+ uuid: decoded.uuid,
76
+ totalSize,
77
+ completedSize: totalSize,
78
+ });
79
+ }
80
+ // 응답 수신으로 Map에서 제거
81
+ pendingRequests.delete(decoded.uuid);
82
+ listenerInfo?.resolve(decoded.message.body);
83
+ }
84
+ else if (decoded.message.name === "error") {
85
+ // progress totalSize 정리
86
+ responseProgressTotalSize.delete(decoded.uuid);
87
+ // 에러 수신으로 Map에서 제거
88
+ pendingRequests.delete(decoded.uuid);
89
+ listenerInfo?.reject(toError(decoded.message.body));
90
+ }
91
+ else if (decoded.message.name === "reload") {
92
+ const body = decoded.message.body;
93
+ if (socket.clientName === body.clientName) {
94
+ emitter.emit("reload", body.changedFileSet);
95
+ }
96
+ }
97
+ else if (decoded.message.name === "evt:on") {
98
+ const body = decoded.message.body;
99
+ emitter.emit("event", { keys: body.keys, data: body.data });
100
+ }
101
+ else {
102
+ throw new Error("서버로부터 잘못된 메시지를 수신했습니다.");
103
+ }
104
+ }
105
+ }
106
+ catch (err) {
107
+ listenerInfo?.reject(err instanceof Error ? err : new Error(String(err)));
108
+ }
109
+ }
110
+ // 모든 대기 중인 요청 취소
111
+ function cancelAllRequests(reason) {
112
+ for (const listenerInfo of pendingRequests.values()) {
113
+ listenerInfo.reject(new Error(`요청 취소됨: ${reason}`));
85
114
  }
86
- }
87
- } catch (err) {
88
- listenerInfo == null ? void 0 : listenerInfo.reject(err instanceof Error ? err : new Error(String(err)));
115
+ pendingRequests.clear();
116
+ responseProgressTotalSize.clear();
89
117
  }
90
- }
91
- function cancelAllRequests(reason) {
92
- for (const listenerInfo of pendingRequests.values()) {
93
- listenerInfo.reject(new Error(`Request canceled: ${reason}`));
118
+ function toError(body) {
119
+ let err = new Error(body.message);
120
+ err = Object.assign(err, body);
121
+ return err;
94
122
  }
95
- pendingRequests.clear();
96
- responseProgressTotalSize.clear();
97
- }
98
- function toError(body) {
99
- let err = new Error(body.message);
100
- err = Object.assign(err, body);
101
- return err;
102
- }
103
- return {
104
- on: emitter.on.bind(emitter),
105
- off: emitter.off.bind(emitter),
106
- send
107
- };
123
+ return {
124
+ on: emitter.on.bind(emitter),
125
+ off: emitter.off.bind(emitter),
126
+ send,
127
+ };
108
128
  }
109
- export {
110
- createServiceTransport
111
- };
112
- //# sourceMappingURL=service-transport.js.map
129
+ //# sourceMappingURL=service-transport.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/transport/service-transport.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
1
+ {"version":3,"file":"service-transport.js","sourceRoot":"","sources":["..\\..\\src\\transport\\service-transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AA2B3D,MAAM,UAAU,sBAAsB,CACpC,MAAsB,EACtB,QAA+B;IAE/B,MAAM,OAAO,GAAG,IAAI,YAAY,EAA0B,CAAC;IAE3D,MAAM,eAAe,GAAG,IAAI,GAAG,EAO5B,CAAC;IAEJ,2CAA2C;IAC3C,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5D,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEhC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3B,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;YACnD,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,IAAI,CAAC,OAA6B,EAAE,QAA0B;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAExC,oCAAoC;QACpC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtD,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,0DAA0D;QAC1D,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEhC,QAAQ;QACR,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEnE,eAAe;YACf,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAClB,IAAI;oBACJ,SAAS;oBACT,aAAa,EAAE,CAAC;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,KAAK;YACL,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,gBAAgB;YAChB,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,GAAY,CAAC,CAAC;YAChD,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,WAAW;QACX,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,GAAU;QACjC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE3C,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAChC,+BAA+B;gBAC/B,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBAE/D,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;oBACjC,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;iBACrC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAoD,CAAC;oBAClF,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;wBAC/B,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,aAAa,EAAE,IAAI,CAAC,aAAa;qBAClC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC/C,+BAA+B;oBAC/B,MAAM,SAAS,GAAG,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC9D,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;wBACtB,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAC/C,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;4BACjC,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,SAAS;4BACT,aAAa,EAAE,SAAS;yBACzB,CAAC,CAAC;oBACL,CAAC;oBAED,mBAAmB;oBACnB,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAErC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAA8B,CAAC,CAAC;gBACxE,CAAC;qBAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC5C,wBAAwB;oBACxB,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAE/C,mBAAmB;oBACnB,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAErC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtD,CAAC;qBAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAA2D,CAAC;oBACzF,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;wBAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAyC,CAAC;oBACvE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,EAAE,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,SAAS,iBAAiB,CAAC,MAAc;QACvC,KAAK,MAAM,YAAY,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,yBAAyB,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,SAAS,OAAO,CAAC,IAAiC;QAChD,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QAC5B,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI;KACL,CAAC;AACJ,CAAC"}
@@ -1,169 +1,194 @@
1
1
  import { EventEmitter, Uuid, wait } from "@simplysm/core-common";
2
2
  import consola from "consola";
3
3
  const logger = consola.withTag("service-client:SocketProvider");
4
- function createSocketProvider(url, clientName, maxReconnectCount) {
5
- const HEARTBEAT_TIMEOUT = 3e4;
6
- const HEARTBEAT_INTERVAL = 5e3;
7
- const RECONNECT_DELAY = 3e3;
8
- const PING_PACKET = new Uint8Array([1]);
9
- let ws;
10
- let isManualClose = false;
11
- let reconnectCount = 0;
12
- let heartbeatTimer;
13
- let lastHeartbeatTime = Date.now();
14
- const emitter = new EventEmitter();
15
- function isConnected() {
16
- return (ws == null ? void 0 : ws.readyState) === WebSocket.OPEN;
17
- }
18
- async function connect() {
19
- if (isConnected()) return;
20
- isManualClose = false;
21
- try {
22
- await createSocket();
23
- startHeartbeat();
24
- reconnectCount = 0;
25
- emitter.emit("state", "connected");
26
- } catch (err) {
27
- throw err;
4
+ export function createSocketProvider(url, clientName, maxReconnectCount) {
5
+ // 설정 상수
6
+ const HEARTBEAT_TIMEOUT = 30000; // 30초 동안 메시지가 없으면 연결 끊김으로 간주
7
+ const HEARTBEAT_INTERVAL = 5000; // 5초마다 ping 전송
8
+ const RECONNECT_DELAY = 3000; // 3초마다 재연결 시도
9
+ // 1바이트 버퍼 사전 할당 (메모리 절약)
10
+ const PING_PACKET = new Uint8Array([0x01]);
11
+ // 상태
12
+ let ws;
13
+ let isManualClose = false;
14
+ let reconnectCount = 0;
15
+ let heartbeatTimer;
16
+ let lastHeartbeatTime = Date.now();
17
+ const emitter = new EventEmitter();
18
+ function isConnected() {
19
+ return ws?.readyState === WebSocket.OPEN;
28
20
  }
29
- }
30
- async function close() {
31
- isManualClose = true;
32
- stopHeartbeat();
33
- const currentWs = ws;
34
- if (currentWs != null) {
35
- currentWs.close();
36
- await wait.until(() => currentWs.readyState === WebSocket.CLOSED, 100, 30).catch(() => {
37
- });
21
+ async function connect() {
22
+ if (isConnected())
23
+ return;
24
+ isManualClose = false;
25
+ try {
26
+ await createSocket();
27
+ startHeartbeat();
28
+ reconnectCount = 0; // 연결 성공 카운트 초기화
29
+ emitter.emit("state", "connected");
30
+ }
31
+ catch (err) {
32
+ // 초기 연결 실패 시 예외를 던짐 (호출자가 처리할 수 있도록)
33
+ throw err;
34
+ }
38
35
  }
39
- emitter.emit("state", "closed");
40
- }
41
- async function send(data) {
42
- try {
43
- await wait.until(() => isConnected(), void 0, 50);
44
- } catch {
45
- throw new Error("Not connected to the server. Please check your internet connection.");
36
+ async function close() {
37
+ isManualClose = true;
38
+ stopHeartbeat();
39
+ const currentWs = ws;
40
+ if (currentWs != null) {
41
+ currentWs.close();
42
+ // 완전히 닫힐 때까지 대기 (정상 종료)
43
+ await wait.until(() => currentWs.readyState === WebSocket.CLOSED, 100, 30).catch(() => { });
44
+ }
45
+ emitter.emit("state", "closed");
46
46
  }
47
- const currentWs = ws;
48
- if (currentWs == null) {
49
- throw new Error("WebSocket is not connected.");
47
+ async function send(data) {
48
+ try {
49
+ await wait.until(() => isConnected(), undefined, 50);
50
+ }
51
+ catch {
52
+ throw new Error("서버에 연결되지 않았습니다. 인터넷 연결을 확인해 주세요.");
53
+ }
54
+ const currentWs = ws;
55
+ if (currentWs == null) {
56
+ throw new Error("WebSocket이 연결되지 않았습니다.");
57
+ }
58
+ currentWs.send(data);
50
59
  }
51
- currentWs.send(data);
52
- }
53
- async function createSocket() {
54
- const clientId = Uuid.generate().toString();
55
- const params = new URLSearchParams({
56
- ver: "2",
57
- clientId,
58
- clientName
59
- });
60
- await new Promise((resolve, reject) => {
61
- const newWs = new WebSocket(`${url}?${params.toString()}`);
62
- newWs.binaryType = "arraybuffer";
63
- newWs.onopen = () => {
64
- ws = newWs;
65
- resolve();
66
- };
67
- newWs.onerror = (event) => {
68
- if (!isConnected()) {
69
- const errorEvent = event;
70
- const msg = errorEvent.message;
71
- reject(new Error(msg));
60
+ async function createSocket() {
61
+ const clientId = Uuid.generate().toString();
62
+ const params = new URLSearchParams({
63
+ ver: "2",
64
+ clientId,
65
+ clientName,
66
+ });
67
+ await new Promise((resolve, reject) => {
68
+ const newWs = new WebSocket(`${url}?${params.toString()}`);
69
+ newWs.binaryType = "arraybuffer";
70
+ newWs.onopen = () => {
71
+ ws = newWs;
72
+ resolve();
73
+ };
74
+ newWs.onerror = (event) => {
75
+ // 연결 중 에러 발생 시 reject
76
+ if (!isConnected()) {
77
+ const errorEvent = event;
78
+ const msg = errorEvent.message;
79
+ reject(new Error(msg));
80
+ }
81
+ };
82
+ });
83
+ // 이 시점에서 ws는 항상 할당됨 (ws.onopen에서 할당됨)
84
+ const currentWs = ws;
85
+ if (currentWs == null) {
86
+ throw new Error("WebSocket 초기화 실패");
72
87
  }
73
- };
74
- });
75
- const currentWs = ws;
76
- if (currentWs == null) {
77
- throw new Error("WebSocket initialization failed");
88
+ currentWs.onmessage = (event) => {
89
+ lastHeartbeatTime = Date.now(); // 하트비트 갱신
90
+ const data = event.data;
91
+ const bytes = new Uint8Array(data);
92
+ // Raw Ping/Pong 처리 (먼저 확인)
93
+ // 1바이트이고 첫 번째 바이트가 0x02 (Pong)이면 무시
94
+ // (하트비트 타임스탬프만 갱신되었으므로 추가 작업 불필요)
95
+ if (bytes.length === 1 && bytes[0] === 0x02)
96
+ return;
97
+ emitter.emit("message", bytes);
98
+ };
99
+ currentWs.onclose = async () => {
100
+ stopHeartbeat();
101
+ if (!isManualClose) {
102
+ await tryReconnect();
103
+ }
104
+ };
78
105
  }
79
- currentWs.onmessage = (event) => {
80
- lastHeartbeatTime = Date.now();
81
- const data = event.data;
82
- const bytes = new Uint8Array(data);
83
- if (bytes.length === 1 && bytes[0] === 2) return;
84
- emitter.emit("message", bytes);
85
- };
86
- currentWs.onclose = async () => {
87
- stopHeartbeat();
88
- if (!isManualClose) {
89
- await tryReconnect();
90
- }
91
- };
92
- }
93
- async function tryReconnect() {
94
- while (reconnectCount < maxReconnectCount) {
95
- reconnectCount++;
96
- emitter.emit("state", "reconnecting");
97
- logger.warn("WebSocket disconnected. Attempting reconnect...", {
98
- reconnectCount,
99
- maxReconnectCount
100
- });
101
- await wait.time(RECONNECT_DELAY);
102
- try {
103
- await createSocket();
104
- startHeartbeat();
105
- reconnectCount = 0;
106
- emitter.emit("state", "connected");
107
- logger.info("WebSocket reconnected successfully");
108
- return;
109
- } catch {
110
- }
106
+ async function tryReconnect() {
107
+ // 루프 기반 재연결 (스택 안전성을 위해 재귀 대신 사용)
108
+ while (reconnectCount < maxReconnectCount) {
109
+ reconnectCount++;
110
+ emitter.emit("state", "reconnecting");
111
+ logger.warn("WebSocket 연결 끊김. 재연결 시도 중...", {
112
+ reconnectCount,
113
+ maxReconnectCount,
114
+ });
115
+ await wait.time(RECONNECT_DELAY);
116
+ try {
117
+ await createSocket();
118
+ startHeartbeat();
119
+ reconnectCount = 0;
120
+ emitter.emit("state", "connected"); // 재연결 성공 알림
121
+ logger.info("WebSocket 재연결 성공");
122
+ return; // 재연결 성공 시 루프 종료
123
+ }
124
+ catch {
125
+ // 실패 시 루프 계속
126
+ }
127
+ }
128
+ // 최대 재시도 횟수 초과
129
+ logger.error("재연결 재시도 한도 초과. 연결을 포기합니다.");
130
+ emitter.emit("state", "closed");
111
131
  }
112
- logger.error("Reconnect retry limit exceeded. Giving up.");
113
- emitter.emit("state", "closed");
114
- }
115
- function startHeartbeat() {
116
- stopHeartbeat();
117
- lastHeartbeatTime = Date.now();
118
- heartbeatTimer = setInterval(() => {
119
- if (Date.now() - lastHeartbeatTime > HEARTBEAT_TIMEOUT) {
120
- logger.warn("Heartbeat Timeout. Connection lost.");
132
+ function startHeartbeat() {
121
133
  stopHeartbeat();
122
- if (ws != null) {
123
- const tempWs = ws;
124
- ws = void 0;
125
- tempWs.onclose = null;
126
- tempWs.onerror = null;
127
- tempWs.onmessage = null;
128
- try {
129
- tempWs.close();
130
- } catch {
131
- }
132
- if (!isManualClose) {
133
- void tryReconnect();
134
- }
135
- }
136
- return;
137
- }
138
- const currentWs = ws;
139
- if (isConnected() && currentWs != null) {
140
- try {
141
- currentWs.send(PING_PACKET);
142
- } catch (err) {
143
- logger.warn("Ping send failed", err);
134
+ lastHeartbeatTime = Date.now();
135
+ heartbeatTimer = setInterval(() => {
136
+ // 타임아웃 확인
137
+ if (Date.now() - lastHeartbeatTime > HEARTBEAT_TIMEOUT) {
138
+ logger.warn("하트비트 타임아웃. 연결이 끊어졌습니다.");
139
+ // 반복 실행 방지를 위해 타임아웃 시 즉시 타이머 중지
140
+ stopHeartbeat();
141
+ // 소켓 종료를 기다리지 않음 (onclose가 발생하지 않을 수 있음); 강제 정리 후 재연결
142
+ if (ws != null) {
143
+ const tempWs = ws;
144
+ ws = undefined; // 연결 끊김으로 간주
145
+ // 이전 소켓에서 이벤트 핸들러 제거
146
+ // 늦게 발생하는 onclose 이벤트로 인한 중복 재연결 방지
147
+ tempWs.onclose = null;
148
+ tempWs.onerror = null;
149
+ tempWs.onmessage = null;
150
+ // 소켓 닫기 시도 (에러 무시)
151
+ try {
152
+ tempWs.close();
153
+ }
154
+ catch {
155
+ // 무시
156
+ }
157
+ // 수동 종료가 아닌 경우 강제 재연결 로직 실행
158
+ if (!isManualClose) {
159
+ void tryReconnect();
160
+ }
161
+ }
162
+ return;
163
+ }
164
+ // ping 전송
165
+ const currentWs = ws;
166
+ if (isConnected() && currentWs != null) {
167
+ try {
168
+ currentWs.send(PING_PACKET);
169
+ }
170
+ catch (err) {
171
+ logger.warn("ping 전송 실패", err);
172
+ }
173
+ }
174
+ }, HEARTBEAT_INTERVAL);
175
+ }
176
+ function stopHeartbeat() {
177
+ if (heartbeatTimer != null) {
178
+ clearInterval(heartbeatTimer);
179
+ heartbeatTimer = undefined;
144
180
  }
145
- }
146
- }, HEARTBEAT_INTERVAL);
147
- }
148
- function stopHeartbeat() {
149
- if (heartbeatTimer != null) {
150
- clearInterval(heartbeatTimer);
151
- heartbeatTimer = void 0;
152
181
  }
153
- }
154
- return {
155
- clientName,
156
- get connected() {
157
- return isConnected();
158
- },
159
- on: emitter.on.bind(emitter),
160
- off: emitter.off.bind(emitter),
161
- connect,
162
- close,
163
- send
164
- };
182
+ return {
183
+ clientName,
184
+ get connected() {
185
+ return isConnected();
186
+ },
187
+ on: emitter.on.bind(emitter),
188
+ off: emitter.off.bind(emitter),
189
+ connect,
190
+ close,
191
+ send,
192
+ };
165
193
  }
166
- export {
167
- createSocketProvider
168
- };
169
- //# sourceMappingURL=socket-provider.js.map
194
+ //# sourceMappingURL=socket-provider.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/transport/socket-provider.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
1
+ {"version":3,"file":"socket-provider.js","sourceRoot":"","sources":["..\\..\\src\\transport\\socket-provider.ts"],"names":[],"mappings":"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"}