@tdengine/websocket 3.2.2 → 3.3.0

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 (275) hide show
  1. package/lib/package.json +64 -0
  2. package/lib/src/client/retryConfig.d.ts +10 -0
  3. package/lib/src/client/retryConfig.d.ts.map +1 -0
  4. package/lib/src/client/retryConfig.js +46 -0
  5. package/lib/src/client/wsClient.d.ts +24 -7
  6. package/lib/src/client/wsClient.d.ts.map +1 -1
  7. package/lib/src/client/wsClient.js +164 -137
  8. package/lib/src/client/wsConnector.d.ts +55 -9
  9. package/lib/src/client/wsConnector.d.ts.map +1 -1
  10. package/lib/src/client/wsConnector.js +522 -102
  11. package/lib/src/client/wsConnectorPool.d.ts +5 -1
  12. package/lib/src/client/wsConnectorPool.d.ts.map +1 -1
  13. package/lib/src/client/wsConnectorPool.js +67 -52
  14. package/lib/src/client/wsEventCallback.d.ts +3 -0
  15. package/lib/src/client/wsEventCallback.d.ts.map +1 -1
  16. package/lib/src/client/wsEventCallback.js +67 -8
  17. package/lib/src/client/wsResponse.d.ts +0 -3
  18. package/lib/src/client/wsResponse.d.ts.map +1 -1
  19. package/lib/src/client/wsResponse.js +0 -3
  20. package/lib/src/common/addressConnectionTracker.d.ts +11 -0
  21. package/lib/src/common/addressConnectionTracker.d.ts.map +1 -0
  22. package/lib/src/common/addressConnectionTracker.js +53 -0
  23. package/lib/src/common/config.d.ts +3 -0
  24. package/lib/src/common/config.d.ts.map +1 -1
  25. package/lib/src/common/config.js +6 -0
  26. package/lib/src/common/constant.d.ts +1 -0
  27. package/lib/src/common/constant.d.ts.map +1 -1
  28. package/lib/src/common/constant.js +6 -1
  29. package/lib/src/common/dsn.d.ts +30 -0
  30. package/lib/src/common/dsn.d.ts.map +1 -0
  31. package/lib/src/common/dsn.js +221 -0
  32. package/lib/src/common/taosResult.d.ts.map +1 -1
  33. package/lib/src/common/taosResult.js +0 -5
  34. package/lib/src/common/urlParser.d.ts +32 -0
  35. package/lib/src/common/urlParser.d.ts.map +1 -0
  36. package/lib/src/common/urlParser.js +201 -0
  37. package/lib/src/common/utils.d.ts +6 -1
  38. package/lib/src/common/utils.d.ts.map +1 -1
  39. package/lib/src/common/utils.js +74 -22
  40. package/lib/src/index.d.ts.map +1 -1
  41. package/lib/src/sql/wsSql.d.ts.map +1 -1
  42. package/lib/src/sql/wsSql.js +2 -2
  43. package/lib/src/stmt/FieldBindParams.d.ts.map +1 -1
  44. package/lib/src/stmt/wsColumnInfo.d.ts.map +1 -1
  45. package/lib/src/stmt/wsParams1.d.ts.map +1 -1
  46. package/lib/src/stmt/wsParams1.js +26 -26
  47. package/lib/src/stmt/wsParams2.d.ts.map +1 -1
  48. package/lib/src/stmt/wsParams2.js +0 -3
  49. package/lib/src/stmt/wsParamsBase.d.ts.map +1 -1
  50. package/lib/src/stmt/wsProto.d.ts.map +1 -1
  51. package/lib/src/stmt/wsProto.js +16 -16
  52. package/lib/src/stmt/wsStmt1.d.ts.map +1 -1
  53. package/lib/src/stmt/wsStmt2.d.ts +12 -4
  54. package/lib/src/stmt/wsStmt2.d.ts.map +1 -1
  55. package/lib/src/stmt/wsStmt2.js +182 -64
  56. package/lib/src/stmt/wsTableInfo.d.ts.map +1 -1
  57. package/lib/src/tmq/config.d.ts +4 -2
  58. package/lib/src/tmq/config.d.ts.map +1 -1
  59. package/lib/src/tmq/config.js +30 -13
  60. package/lib/src/tmq/constant.d.ts +4 -0
  61. package/lib/src/tmq/constant.d.ts.map +1 -1
  62. package/lib/src/tmq/constant.js +4 -0
  63. package/lib/src/tmq/tmqResponse.d.ts.map +1 -1
  64. package/lib/src/tmq/tmqResponse.js +1 -4
  65. package/lib/src/tmq/wsTmq.d.ts +4 -1
  66. package/lib/src/tmq/wsTmq.d.ts.map +1 -1
  67. package/lib/src/tmq/wsTmq.js +55 -27
  68. package/lib/test/bulkPulling/a.test.d.ts +2 -0
  69. package/lib/test/bulkPulling/a.test.d.ts.map +1 -0
  70. package/lib/test/bulkPulling/a.test.js +166 -0
  71. package/lib/test/bulkPulling/cloud.tmq.test.js +3 -2
  72. package/lib/test/bulkPulling/decimal.test.js +8 -8
  73. package/lib/test/bulkPulling/dsn.test.d.ts +2 -0
  74. package/lib/test/bulkPulling/dsn.test.d.ts.map +1 -0
  75. package/lib/test/bulkPulling/dsn.test.js +397 -0
  76. package/lib/test/bulkPulling/queryTables.test.js +1 -1
  77. package/lib/test/bulkPulling/retryConfig.test.d.ts +2 -0
  78. package/lib/test/bulkPulling/retryConfig.test.d.ts.map +1 -0
  79. package/lib/test/bulkPulling/retryConfig.test.js +34 -0
  80. package/lib/test/bulkPulling/schemaless.test.js +15 -14
  81. package/lib/test/bulkPulling/sql.failover.test.d.ts +2 -0
  82. package/lib/test/bulkPulling/sql.failover.test.d.ts.map +1 -0
  83. package/lib/test/bulkPulling/sql.failover.test.js +338 -0
  84. package/lib/test/bulkPulling/sql.test.js +116 -44
  85. package/lib/test/bulkPulling/stmt1.func.test.js +31 -30
  86. package/lib/test/bulkPulling/stmt1.type.test.js +1 -1
  87. package/lib/test/bulkPulling/stmt2.failover.test.d.ts +2 -0
  88. package/lib/test/bulkPulling/stmt2.failover.test.d.ts.map +1 -0
  89. package/lib/test/bulkPulling/stmt2.failover.test.js +313 -0
  90. package/lib/test/bulkPulling/stmt2.func.test.js +37 -36
  91. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts +2 -0
  92. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts.map +1 -0
  93. package/lib/test/bulkPulling/stmt2.init.failover.test.js +50 -0
  94. package/lib/test/bulkPulling/stmt2.type.test.js +1 -1
  95. package/lib/test/bulkPulling/tmq.config.test.d.ts +2 -0
  96. package/lib/test/bulkPulling/tmq.config.test.d.ts.map +1 -0
  97. package/lib/test/bulkPulling/tmq.config.test.js +77 -0
  98. package/lib/test/bulkPulling/tmq.failover.test.d.ts +2 -0
  99. package/lib/test/bulkPulling/tmq.failover.test.d.ts.map +1 -0
  100. package/lib/test/bulkPulling/tmq.failover.test.js +404 -0
  101. package/lib/test/bulkPulling/tmq.test.js +135 -14
  102. package/lib/test/bulkPulling/urlParser.test.d.ts +2 -0
  103. package/lib/test/bulkPulling/urlParser.test.d.ts.map +1 -0
  104. package/lib/test/bulkPulling/urlParser.test.js +452 -0
  105. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts +2 -0
  106. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts.map +1 -0
  107. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.js +184 -0
  108. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts +2 -0
  109. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts.map +1 -0
  110. package/lib/test/bulkPulling/wsClient.recovery.test.js +104 -0
  111. package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts +2 -0
  112. package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts.map +1 -0
  113. package/lib/test/bulkPulling/wsConfig.dsn.test.js +39 -0
  114. package/lib/test/bulkPulling/wsConnectPool.test.js +7 -7
  115. package/lib/test/bulkPulling/wsConnector.failover.test.d.ts +2 -0
  116. package/lib/test/bulkPulling/wsConnector.failover.test.d.ts.map +1 -0
  117. package/lib/test/bulkPulling/wsConnector.failover.test.js +497 -0
  118. package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts +2 -0
  119. package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts.map +1 -0
  120. package/lib/test/bulkPulling/wsConnectorPool.key.test.js +52 -0
  121. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts +2 -0
  122. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts.map +1 -0
  123. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.js +28 -0
  124. package/lib/test/bulkPulling/wsEventCallback.test.d.ts +2 -0
  125. package/lib/test/bulkPulling/wsEventCallback.test.d.ts.map +1 -0
  126. package/lib/test/bulkPulling/wsEventCallback.test.js +54 -0
  127. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts +2 -0
  128. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts.map +1 -0
  129. package/lib/test/bulkPulling/wsProxy.failover.integration.test.js +120 -0
  130. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts +2 -0
  131. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts.map +1 -0
  132. package/lib/test/bulkPulling/wsProxy.failover.test.js +465 -0
  133. package/lib/test/client/wsClient.recovery.test.d.ts +2 -0
  134. package/lib/test/client/wsClient.recovery.test.d.ts.map +1 -0
  135. package/lib/test/client/wsClient.recovery.test.js +122 -0
  136. package/lib/test/client/wsConnectPool.test.d.ts +2 -0
  137. package/lib/test/client/wsConnectPool.test.d.ts.map +1 -0
  138. package/lib/test/client/wsConnectPool.test.js +147 -0
  139. package/lib/test/client/wsConnector.failover.test.d.ts +2 -0
  140. package/lib/test/client/wsConnector.failover.test.d.ts.map +1 -0
  141. package/lib/test/client/wsConnector.failover.test.js +681 -0
  142. package/lib/test/client/wsConnector.leastConnections.test.d.ts +2 -0
  143. package/lib/test/client/wsConnector.leastConnections.test.d.ts.map +1 -0
  144. package/lib/test/client/wsConnector.leastConnections.test.js +71 -0
  145. package/lib/test/client/wsConnectorPool.key.test.d.ts +2 -0
  146. package/lib/test/client/wsConnectorPool.key.test.d.ts.map +1 -0
  147. package/lib/test/client/wsConnectorPool.key.test.js +127 -0
  148. package/lib/test/client/wsEventCallback.test.d.ts +2 -0
  149. package/lib/test/client/wsEventCallback.test.d.ts.map +1 -0
  150. package/lib/test/client/wsEventCallback.test.js +98 -0
  151. package/lib/test/common/addressConnectionTracker.test.d.ts +2 -0
  152. package/lib/test/common/addressConnectionTracker.test.d.ts.map +1 -0
  153. package/lib/test/common/addressConnectionTracker.test.js +74 -0
  154. package/lib/test/common/dsn.test.d.ts +2 -0
  155. package/lib/test/common/dsn.test.d.ts.map +1 -0
  156. package/lib/test/common/dsn.test.js +406 -0
  157. package/lib/test/common/log.test.d.ts +2 -0
  158. package/lib/test/common/log.test.d.ts.map +1 -0
  159. package/lib/test/common/log.test.js +54 -0
  160. package/lib/test/common/utils.test.d.ts +2 -0
  161. package/lib/test/common/utils.test.d.ts.map +1 -0
  162. package/lib/test/common/utils.test.js +13 -0
  163. package/lib/test/common/wsConfig.dsn.test.d.ts +2 -0
  164. package/lib/test/common/wsConfig.dsn.test.d.ts.map +1 -0
  165. package/lib/test/common/wsConfig.dsn.test.js +39 -0
  166. package/lib/test/helpers/utils.d.ts +27 -0
  167. package/lib/test/helpers/utils.d.ts.map +1 -0
  168. package/lib/test/helpers/utils.js +341 -0
  169. package/lib/test/helpers/wsFailoverProxy.d.ts +109 -0
  170. package/lib/test/helpers/wsFailoverProxy.d.ts.map +1 -0
  171. package/lib/test/helpers/wsFailoverProxy.js +420 -0
  172. package/lib/test/helpers/wsProxy.d.ts +110 -0
  173. package/lib/test/helpers/wsProxy.d.ts.map +1 -0
  174. package/lib/test/helpers/wsProxy.js +429 -0
  175. package/lib/test/sql/core/decimal.test.d.ts +2 -0
  176. package/lib/test/sql/core/decimal.test.d.ts.map +1 -0
  177. package/lib/test/sql/core/decimal.test.js +153 -0
  178. package/lib/test/sql/core/queryTables.test.d.ts +2 -0
  179. package/lib/test/sql/core/queryTables.test.d.ts.map +1 -0
  180. package/lib/test/sql/core/queryTables.test.js +506 -0
  181. package/lib/test/sql/core/schemaless.test.d.ts +2 -0
  182. package/lib/test/sql/core/schemaless.test.d.ts.map +1 -0
  183. package/lib/test/sql/core/schemaless.test.js +102 -0
  184. package/lib/test/sql/core/sql.test.d.ts +2 -0
  185. package/lib/test/sql/core/sql.test.d.ts.map +1 -0
  186. package/lib/test/sql/core/sql.test.js +324 -0
  187. package/lib/test/sql/decimal.test.d.ts +2 -0
  188. package/lib/test/sql/decimal.test.d.ts.map +1 -0
  189. package/lib/test/sql/decimal.test.js +153 -0
  190. package/lib/test/sql/failover/sql.failover.test.d.ts +2 -0
  191. package/lib/test/sql/failover/sql.failover.test.d.ts.map +1 -0
  192. package/lib/test/sql/failover/sql.failover.test.js +341 -0
  193. package/lib/test/sql/queryTables.test.d.ts +2 -0
  194. package/lib/test/sql/queryTables.test.d.ts.map +1 -0
  195. package/lib/test/sql/queryTables.test.js +506 -0
  196. package/lib/test/sql/schemaless.test.d.ts +2 -0
  197. package/lib/test/sql/schemaless.test.d.ts.map +1 -0
  198. package/lib/test/sql/schemaless.test.js +102 -0
  199. package/lib/test/sql/sql.failover.test.d.ts +2 -0
  200. package/lib/test/sql/sql.failover.test.d.ts.map +1 -0
  201. package/lib/test/sql/sql.failover.test.js +341 -0
  202. package/lib/test/sql/sql.test.d.ts +2 -0
  203. package/lib/test/sql/sql.test.d.ts.map +1 -0
  204. package/lib/test/sql/sql.test.js +324 -0
  205. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts +2 -0
  206. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts.map +1 -0
  207. package/lib/test/stmt/failover/stmt2.failover.mock.test.js +341 -0
  208. package/lib/test/stmt/failover/stmt2.failover.test.d.ts +2 -0
  209. package/lib/test/stmt/failover/stmt2.failover.test.d.ts.map +1 -0
  210. package/lib/test/stmt/failover/stmt2.failover.test.js +384 -0
  211. package/lib/test/stmt/stmt1.func.test.d.ts +2 -0
  212. package/lib/test/stmt/stmt1.func.test.d.ts.map +1 -0
  213. package/lib/test/stmt/stmt1.func.test.js +418 -0
  214. package/lib/test/stmt/stmt1.type.test.d.ts +2 -0
  215. package/lib/test/stmt/stmt1.type.test.d.ts.map +1 -0
  216. package/lib/test/stmt/stmt1.type.test.js +399 -0
  217. package/lib/test/stmt/stmt2.failover.mock.test.d.ts +2 -0
  218. package/lib/test/stmt/stmt2.failover.mock.test.d.ts.map +1 -0
  219. package/lib/test/stmt/stmt2.failover.mock.test.js +341 -0
  220. package/lib/test/stmt/stmt2.failover.test.d.ts +2 -0
  221. package/lib/test/stmt/stmt2.failover.test.d.ts.map +1 -0
  222. package/lib/test/stmt/stmt2.failover.test.js +384 -0
  223. package/lib/test/stmt/stmt2.func.test.d.ts +2 -0
  224. package/lib/test/stmt/stmt2.func.test.d.ts.map +1 -0
  225. package/lib/test/stmt/stmt2.func.test.js +537 -0
  226. package/lib/test/stmt/stmt2.type.test.d.ts +2 -0
  227. package/lib/test/stmt/stmt2.type.test.d.ts.map +1 -0
  228. package/lib/test/stmt/stmt2.type.test.js +401 -0
  229. package/lib/test/stmt/v1/stmt1.func.test.d.ts +2 -0
  230. package/lib/test/stmt/v1/stmt1.func.test.d.ts.map +1 -0
  231. package/lib/test/stmt/v1/stmt1.func.test.js +418 -0
  232. package/lib/test/stmt/v1/stmt1.type.test.d.ts +2 -0
  233. package/lib/test/stmt/v1/stmt1.type.test.d.ts.map +1 -0
  234. package/lib/test/stmt/v1/stmt1.type.test.js +399 -0
  235. package/lib/test/stmt/v2/stmt2.func.test.d.ts +2 -0
  236. package/lib/test/stmt/v2/stmt2.func.test.d.ts.map +1 -0
  237. package/lib/test/stmt/v2/stmt2.func.test.js +537 -0
  238. package/lib/test/stmt/v2/stmt2.type.test.d.ts +2 -0
  239. package/lib/test/stmt/v2/stmt2.type.test.d.ts.map +1 -0
  240. package/lib/test/stmt/v2/stmt2.type.test.js +401 -0
  241. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts +2 -0
  242. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts.map +1 -0
  243. package/lib/test/tmq/cloud/cloud.tmq.test.js +84 -0
  244. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts +2 -0
  245. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts.map +1 -0
  246. package/lib/test/tmq/cloud/tmq.cloud.test.js +82 -0
  247. package/lib/test/tmq/core/tmq.config.test.d.ts +2 -0
  248. package/lib/test/tmq/core/tmq.config.test.d.ts.map +1 -0
  249. package/lib/test/tmq/core/tmq.config.test.js +83 -0
  250. package/lib/test/tmq/core/tmq.test.d.ts +2 -0
  251. package/lib/test/tmq/core/tmq.test.d.ts.map +1 -0
  252. package/lib/test/tmq/core/tmq.test.js +513 -0
  253. package/lib/test/tmq/failover/tmq.failover.test.d.ts +2 -0
  254. package/lib/test/tmq/failover/tmq.failover.test.d.ts.map +1 -0
  255. package/lib/test/tmq/failover/tmq.failover.test.js +404 -0
  256. package/lib/test/tmq/tmq.cloud.test.d.ts +2 -0
  257. package/lib/test/tmq/tmq.cloud.test.d.ts.map +1 -0
  258. package/lib/test/tmq/tmq.cloud.test.js +82 -0
  259. package/lib/test/tmq/tmq.config.test.d.ts +2 -0
  260. package/lib/test/tmq/tmq.config.test.d.ts.map +1 -0
  261. package/lib/test/tmq/tmq.config.test.js +94 -0
  262. package/lib/test/tmq/tmq.failover.test.d.ts +2 -0
  263. package/lib/test/tmq/tmq.failover.test.d.ts.map +1 -0
  264. package/lib/test/tmq/tmq.failover.test.js +404 -0
  265. package/lib/test/tmq/tmq.test.d.ts +2 -0
  266. package/lib/test/tmq/tmq.test.d.ts.map +1 -0
  267. package/lib/test/tmq/tmq.test.js +513 -0
  268. package/lib/test/unit/connectionManager.test.d.ts +2 -0
  269. package/lib/test/unit/connectionManager.test.d.ts.map +1 -0
  270. package/lib/test/unit/connectionManager.test.js +91 -0
  271. package/lib/test/utils.d.ts +4 -0
  272. package/lib/test/utils.d.ts.map +1 -1
  273. package/lib/test/utils.js +11 -17
  274. package/package.json +1 -1
  275. package/readme.md +2 -2
@@ -13,27 +13,32 @@ const tmqResponse_1 = require("./tmqResponse");
13
13
  const reqid_1 = require("../common/reqid");
14
14
  const log_1 = __importDefault(require("../common/log"));
15
15
  const wsResponse_1 = require("../client/wsResponse");
16
+ const utils_1 = require("../common/utils");
17
+ const constant_2 = require("../common/constant");
16
18
  class WsConsumer {
17
19
  constructor(wsConfig) {
18
- this._wsConfig = new config_1.TmqConfig(wsConfig);
19
- log_1.default.debug(this._wsConfig);
20
- if (wsConfig.size == 0 || !this._wsConfig.url) {
20
+ this._config = new config_1.TmqConfig(wsConfig);
21
+ if (log_1.default.isDebugEnabled()) {
22
+ log_1.default.debug("WsConsumer config: " + (0, utils_1.maskTmqConfigForLog)(this._config));
23
+ }
24
+ if (wsConfig.size == 0 || !this._config.dsn) {
21
25
  throw new wsError_1.WebSocketInterfaceError(wsError_1.ErrorCode.ERR_INVALID_URL, "invalid url, password or username needed.");
22
26
  }
23
- this._wsClient = new wsClient_1.WsClient(this._wsConfig.url, this._wsConfig.timeout);
27
+ this._wsClient = new wsClient_1.WsClient(this._config.dsn, this._config.timeout);
28
+ this.bindSessionRecoveryHook();
24
29
  this._lastMessageID = BigInt(0);
25
30
  }
26
31
  async init() {
27
32
  let wsSql = null;
28
33
  try {
29
- if (this._wsConfig.sql_url) {
30
- wsSql = new wsClient_1.WsClient(this._wsConfig.sql_url, this._wsConfig.timeout);
34
+ if (this._config.sqlDsn) {
35
+ wsSql = new wsClient_1.WsClient(this._config.sqlDsn, this._config.timeout);
31
36
  await wsSql.connect();
32
37
  await wsSql.checkVersion();
33
38
  await this._wsClient.ready();
34
39
  }
35
40
  else {
36
- throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, url: ${this._wsConfig.url}`);
41
+ throw new wsError_1.TDWebSocketClientError(wsError_1.ErrorCode.ERR_WEBSOCKET_CONNECTION_FAIL, `connection creation failed, dsn: ${this._config.dsn}`);
37
42
  }
38
43
  }
39
44
  catch (e) {
@@ -49,32 +54,54 @@ class WsConsumer {
49
54
  }
50
55
  static async newConsumer(wsConfig) {
51
56
  if (wsConfig.size == 0 || !wsConfig.get(constant_1.TMQConstants.WS_URL)) {
52
- throw new wsError_1.WebSocketInterfaceError(wsError_1.ErrorCode.ERR_INVALID_URL, "invalid url, password or username needed.");
57
+ throw new wsError_1.WebSocketInterfaceError(wsError_1.ErrorCode.ERR_INVALID_URL, "Invalid DSN");
53
58
  }
54
- let wsConsumer = new WsConsumer(wsConfig);
59
+ const wsConsumer = new WsConsumer(wsConfig);
55
60
  return await wsConsumer.init();
56
61
  }
57
- async subscribe(topics, reqId) {
58
- if (!topics || topics.length == 0) {
59
- throw new wsError_1.TaosResultError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "WsTmq Subscribe params is error!");
60
- }
61
- let queryMsg = {
62
+ bindSessionRecoveryHook() {
63
+ this._wsClient.setSessionRecoveryHook(async () => {
64
+ await this.recoverSessionContext();
65
+ });
66
+ }
67
+ buildSubscribeMessage(topics, reqId) {
68
+ const user = this._config.user === null
69
+ ? null
70
+ : (0, utils_1.safeDecodeURIComponent)(this._config.user);
71
+ const password = this._config.password === null
72
+ ? null
73
+ : (0, utils_1.safeDecodeURIComponent)(this._config.password);
74
+ return {
62
75
  action: constant_1.TMQMessageType.Subscribe,
63
76
  args: {
64
77
  req_id: reqid_1.ReqId.getReqID(reqId),
65
- user: this._wsConfig.user,
66
- password: this._wsConfig.password,
67
- group_id: this._wsConfig.group_id,
68
- client_id: this._wsConfig.client_id,
78
+ user,
79
+ password,
80
+ group_id: this._config.group_id,
81
+ client_id: this._config.client_id,
69
82
  topics: topics,
70
- offset_rest: this._wsConfig.offset_rest,
71
- auto_commit: this._wsConfig.auto_commit,
72
- auto_commit_interval_ms: this._wsConfig.auto_commit_interval_ms,
73
- config: this._wsConfig.otherConfigs,
83
+ offset_rest: this._config.offset_rest,
84
+ auto_commit: String(this._config.auto_commit),
85
+ auto_commit_interval_ms: String(this._config.auto_commit_interval_ms),
86
+ config: Object.fromEntries(this._config.otherConfigs),
87
+ connector: constant_2.ConnectorInfo,
74
88
  },
75
89
  };
76
- this._topics = topics;
77
- return await this._wsClient.exec(JSON.stringify(queryMsg));
90
+ }
91
+ async recoverSessionContext() {
92
+ if (!this._topics || this._topics.length === 0) {
93
+ return;
94
+ }
95
+ log_1.default.info(`Recovering TMQ session context, re-subscribing ${this._topics.length} topic(s).`);
96
+ await this._wsClient.sendMsgDirect(JSON.stringify(this.buildSubscribeMessage(this._topics)), false);
97
+ }
98
+ async subscribe(topics, reqId) {
99
+ if (!topics || topics.length == 0) {
100
+ throw new wsError_1.TaosResultError(wsError_1.ErrorCode.ERR_INVALID_PARAMS, "WsTmq Subscribe params is error!");
101
+ }
102
+ let queryMsg = this.buildSubscribeMessage(topics, reqId);
103
+ await this._wsClient.exec(JSON.stringify(queryMsg));
104
+ this._topics = [...topics];
78
105
  }
79
106
  async unsubscribe(reqId) {
80
107
  let queryMsg = {
@@ -83,14 +110,15 @@ class WsConsumer {
83
110
  req_id: reqid_1.ReqId.getReqID(reqId),
84
111
  },
85
112
  };
86
- return await this._wsClient.exec(JSON.stringify(queryMsg));
113
+ await this._wsClient.exec(JSON.stringify(queryMsg));
114
+ this._topics = undefined;
87
115
  }
88
116
  async poll(timeoutMs, reqId) {
89
- if (this._wsConfig.auto_commit) {
117
+ if (this._config.auto_commit) {
90
118
  if (this._commitTime) {
91
119
  let currTime = new Date().getTime();
92
120
  let diff = Math.abs(currTime - this._commitTime);
93
- if (diff >= this._wsConfig.auto_commit_interval_ms) {
121
+ if (diff >= this._config.auto_commit_interval_ms) {
94
122
  await this.doCommit();
95
123
  this._commitTime = new Date().getTime();
96
124
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=a.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/a.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ // import { w3cwebsocket } from "websocket";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ // test("test ws", async () => {
38
+ // const conn = new w3cwebsocket(
39
+ // "ws://localhost:6041/ws",
40
+ // undefined,
41
+ // undefined,
42
+ // undefined,
43
+ // undefined,
44
+ // {
45
+ // maxReceivedFrameSize: 0x60000000,
46
+ // maxReceivedMessageSize: 0x60000000,
47
+ // }
48
+ // );
49
+ // conn.onopen = function () {
50
+ // console.log("websocket connection opened");
51
+ // };
52
+ // conn.onmessage = function (message) {
53
+ // console.log("Received message:", message.data);
54
+ // };
55
+ // conn.onerror = function (err: Error) {
56
+ // console.error(`webSocket connection failed, url: ${this.url}, error: ${err.message}`);
57
+ // };
58
+ // conn.onclose = function () {
59
+ // console.log("websocket connection closed");
60
+ // };
61
+ // // cannot call send() while not connected
62
+ // conn.send("hello world");
63
+ // conn.close();
64
+ // });
65
+ const websocket_1 = require("websocket");
66
+ const utils_1 = require("../helpers/utils");
67
+ const log_1 = __importStar(require("../../src/common/log"));
68
+ (0, log_1.setLevel)("debug");
69
+ function waitForOpen(conn, timeoutMs = 5000) {
70
+ if (conn.readyState === websocket_1.w3cwebsocket.OPEN) {
71
+ return Promise.resolve();
72
+ }
73
+ return new Promise((resolve, reject) => {
74
+ const timer = setTimeout(() => {
75
+ cleanup();
76
+ reject(new Error(`waitForOpen timeout after ${timeoutMs}ms`));
77
+ }, timeoutMs);
78
+ const cleanup = () => {
79
+ clearTimeout(timer);
80
+ conn.onopen = prevOpen;
81
+ conn.onerror = prevError;
82
+ conn.onclose = prevClose;
83
+ };
84
+ const prevOpen = conn.onopen;
85
+ const prevError = conn.onerror;
86
+ const prevClose = conn.onclose;
87
+ conn.onopen = function () {
88
+ prevOpen?.call(this);
89
+ cleanup();
90
+ resolve();
91
+ };
92
+ conn.onerror = function (err) {
93
+ prevError?.call(this, err);
94
+ cleanup();
95
+ reject(err);
96
+ };
97
+ conn.onclose = function (e) {
98
+ prevClose?.call(this, e);
99
+ cleanup();
100
+ reject(new Error(`socket closed before open: ${e.code} ${e.reason || ""}`.trim()));
101
+ };
102
+ });
103
+ }
104
+ function waitForClose(conn, timeoutMs = 5000) {
105
+ if (conn.readyState === websocket_1.w3cwebsocket.CLOSED) {
106
+ return Promise.resolve();
107
+ }
108
+ return new Promise((resolve, reject) => {
109
+ const timer = setTimeout(() => {
110
+ cleanup();
111
+ reject(new Error(`waitForClose timeout after ${timeoutMs}ms`));
112
+ }, timeoutMs);
113
+ const cleanup = () => {
114
+ clearTimeout(timer);
115
+ conn.onclose = prevClose;
116
+ conn.onerror = prevError;
117
+ };
118
+ const prevClose = conn.onclose;
119
+ const prevError = conn.onerror;
120
+ conn.onclose = function (e) {
121
+ prevClose?.call(this, e);
122
+ cleanup();
123
+ resolve();
124
+ };
125
+ conn.onerror = function (err) {
126
+ prevError?.call(this, err);
127
+ cleanup();
128
+ reject(err);
129
+ };
130
+ });
131
+ }
132
+ test("test ws", async () => {
133
+ const conn = new websocket_1.w3cwebsocket("ws://localhost:6041/ws", undefined, undefined, undefined, undefined, {
134
+ maxReceivedFrameSize: 0x60000000,
135
+ maxReceivedMessageSize: 0x60000000,
136
+ });
137
+ conn.onopen = function () {
138
+ console.log("websocket connection opened");
139
+ };
140
+ conn.onmessage = function (message) {
141
+ console.log("Received message:", message.data);
142
+ };
143
+ conn.onerror = function (err) {
144
+ console.error(`webSocket connection failed, url: ${this.url}, error: ${err.message}`);
145
+ };
146
+ conn.onclose = function (e) {
147
+ console.log("websocket connection closed, event", e);
148
+ };
149
+ await waitForOpen(conn);
150
+ // cannot call send() while not connected
151
+ conn.send("hello world");
152
+ // conn.close();
153
+ // await waitForClose(conn);
154
+ // restart taosadapter
155
+ console.log("Please restart taosadapter now...");
156
+ log_1.default.info("Please restart taosadapter now...");
157
+ await (0, utils_1.Sleep)(5000);
158
+ // cannot call send() while not connected
159
+ conn.send("hello world after close"); // should not throw, but will be ignored
160
+ await (0, utils_1.Sleep)(5000);
161
+ }, 15000);
162
+ test("test url", async () => {
163
+ const url = new URL("ws://user:pass@localhost:6041/dbname?param1=value1&param2=value2");
164
+ console.log("url", url);
165
+ console.log(url.port);
166
+ });
@@ -6,13 +6,14 @@ const wsConnectorPool_1 = require("../../src/client/wsConnectorPool");
6
6
  const log_1 = require("../../src/common/log");
7
7
  const config_1 = require("../../src/common/config");
8
8
  const wsSql_1 = require("../../src/sql/wsSql");
9
+ const utils_1 = require("../utils");
9
10
  beforeAll(async () => {
10
11
  const url = `wss://${process.env.TDENGINE_CLOUD_URL}?token=${process.env.TDENGINE_CLOUD_TOKEN}`;
11
12
  let wsSql = null;
12
13
  try {
13
14
  const conf = new config_1.WSConfig(url);
14
- conf.setUser("root");
15
- conf.setPwd("taosdata");
15
+ conf.setUser((0, utils_1.testUsername)());
16
+ conf.setPwd((0, utils_1.testPassword)());
16
17
  wsSql = await wsSql_1.WsSql.open(conf);
17
18
  let sql = `INSERT INTO dmeters.d1001 USING dmeters.meters (groupid, location) TAGS(2, 'SanFrancisco')
18
19
  VALUES (NOW + 1a, 10.30000, 219, 0.31000) (NOW + 2a, 12.60000, 218, 0.33000) (NOW + 3a, 12.30000, 221, 0.31000)
@@ -13,8 +13,8 @@ let dropTopic = `DROP TOPIC IF EXISTS topic_decimal_test;`;
13
13
  (0, log_1.setLevel)("debug");
14
14
  beforeAll(async () => {
15
15
  let conf = new config_1.WSConfig(dns);
16
- conf.setUser("root");
17
- conf.setPwd("taosdata");
16
+ conf.setUser((0, utils_1.testUsername)());
17
+ conf.setPwd((0, utils_1.testPassword)());
18
18
  let wsSql = await wsSql_1.WsSql.open(conf);
19
19
  await wsSql.exec(dropTopic);
20
20
  await wsSql.exec("drop database if exists power");
@@ -58,8 +58,8 @@ describe("TDWebSocket.WsSql()", () => {
58
58
  jest.setTimeout(20 * 1000);
59
59
  test("insert recoder", async () => {
60
60
  let conf = new config_1.WSConfig(dns);
61
- conf.setUser("root");
62
- conf.setPwd("taosdata");
61
+ conf.setUser((0, utils_1.testUsername)());
62
+ conf.setPwd((0, utils_1.testPassword)());
63
63
  let wsSql = await wsSql_1.WsSql.open(conf);
64
64
  let taosResult = await wsSql.exec("use power");
65
65
  console.log(taosResult);
@@ -96,8 +96,8 @@ describe("TDWebSocket.WsSql()", () => {
96
96
  test("normal Subscribe", async () => {
97
97
  let configMap = new Map([
98
98
  [constant_1.TMQConstants.GROUP_ID, "gId"],
99
- [constant_1.TMQConstants.CONNECT_USER, "root"],
100
- [constant_1.TMQConstants.CONNECT_PASS, "taosdata"],
99
+ [constant_1.TMQConstants.CONNECT_USER, (0, utils_1.testUsername)()],
100
+ [constant_1.TMQConstants.CONNECT_PASS, (0, utils_1.testPassword)()],
101
101
  [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest"],
102
102
  [constant_1.TMQConstants.CLIENT_ID, "test_tmq_client"],
103
103
  [constant_1.TMQConstants.WS_URL, dns],
@@ -143,8 +143,8 @@ test("normal Subscribe", async () => {
143
143
  });
144
144
  afterAll(async () => {
145
145
  let conf = new config_1.WSConfig(dns);
146
- conf.setUser("root");
147
- conf.setPwd("taosdata");
146
+ conf.setUser((0, utils_1.testUsername)());
147
+ conf.setPwd((0, utils_1.testPassword)());
148
148
  let wsSql = await wsSql_1.WsSql.open(conf);
149
149
  await wsSql.exec(dropTopic);
150
150
  await wsSql.exec("drop database power");
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dsn.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsn.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/dsn.test.ts"],"names":[],"mappings":""}