dingtalk-stream 2.1.4 → 2.1.5

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.
package/README.md CHANGED
@@ -1,3 +1,14 @@
1
+ <p align="left">
2
+ <a target="_blank" href="https://github.com/open-dingtalk/dingtalk-stream-sdk-nodejs/actions/workflows/publish.yml">
3
+ <img src="https://img.shields.io/github/actions/workflow/status/open-dingtalk/dingtalk-stream-sdk-nodejs/publish.yml" />
4
+ </a>
5
+
6
+ <a target="_blank" href="https://www.npmjs.com/package/dingtalk-stream">
7
+ <img alt="NPM Version" src="https://img.shields.io/npm/v/dingtalk-stream">
8
+ </a>
9
+
10
+ </p>
11
+
1
12
  钉钉支持 Stream 模式接入事件推送、机器人收消息以及卡片回调,该 SDK 实现了 Stream 模式。相比 Webhook 模式,Stream 模式可以更简单的接入各类事件和回调。
2
13
 
3
14
  ## 开发教程
package/dist/client.cjs CHANGED
@@ -132,7 +132,14 @@ class DWClient extends EventEmitter {
132
132
  return new Promise((resolve, reject) => {
133
133
  this.userDisconnect = false;
134
134
  this.printDebug("Connecting to dingtalk websocket @ " + this.dw_url);
135
- this.socket = new WebSocket(this.dw_url, this.sslopts);
135
+ try {
136
+ this.socket = new WebSocket(this.dw_url, this.sslopts);
137
+ } catch (err) {
138
+ this.printDebug("WebSocket constructor error");
139
+ console.warn("ERROR", err);
140
+ reject(err);
141
+ return;
142
+ }
136
143
  this.socket.on("open", () => {
137
144
  this.connected = true;
138
145
  console.info("[" + (/* @__PURE__ */ new Date()).toISOString() + "] connect success");
@@ -150,6 +157,7 @@ class DWClient extends EventEmitter {
150
157
  (_b = this.socket) == null ? void 0 : _b.ping("", true);
151
158
  }, this.heartbeat_interval);
152
159
  }
160
+ resolve();
153
161
  });
154
162
  this.socket.on("pong", () => {
155
163
  this.heartbeat();
@@ -170,15 +178,26 @@ class DWClient extends EventEmitter {
170
178
  }
171
179
  });
172
180
  this.socket.on("error", (err) => {
181
+ var _a;
173
182
  this.printDebug("SOCKET ERROR");
174
183
  console.warn("ERROR", err);
184
+ (_a = this.socket) == null ? void 0 : _a.terminate();
185
+ reject(err);
175
186
  });
176
- resolve();
177
187
  });
178
188
  }
179
189
  async connect() {
180
- await this.getEndpoint();
181
- await this._connect();
190
+ try {
191
+ await this.getEndpoint();
192
+ await this._connect();
193
+ } catch (err) {
194
+ if (this.config.autoReconnect && !this.userDisconnect) {
195
+ this.printDebug(
196
+ "Connect failed, retrying in " + this.reconnectInterval / 1e3 + " seconds..."
197
+ );
198
+ setTimeout(() => this.connect(), this.reconnectInterval);
199
+ }
200
+ }
182
201
  }
183
202
  disconnect() {
184
203
  var _a;
package/dist/client.mjs CHANGED
@@ -130,7 +130,14 @@ class DWClient extends EventEmitter {
130
130
  return new Promise((resolve, reject) => {
131
131
  this.userDisconnect = false;
132
132
  this.printDebug("Connecting to dingtalk websocket @ " + this.dw_url);
133
- this.socket = new WebSocket(this.dw_url, this.sslopts);
133
+ try {
134
+ this.socket = new WebSocket(this.dw_url, this.sslopts);
135
+ } catch (err) {
136
+ this.printDebug("WebSocket constructor error");
137
+ console.warn("ERROR", err);
138
+ reject(err);
139
+ return;
140
+ }
134
141
  this.socket.on("open", () => {
135
142
  this.connected = true;
136
143
  console.info("[" + (/* @__PURE__ */ new Date()).toISOString() + "] connect success");
@@ -148,6 +155,7 @@ class DWClient extends EventEmitter {
148
155
  (_b = this.socket) == null ? void 0 : _b.ping("", true);
149
156
  }, this.heartbeat_interval);
150
157
  }
158
+ resolve();
151
159
  });
152
160
  this.socket.on("pong", () => {
153
161
  this.heartbeat();
@@ -168,15 +176,26 @@ class DWClient extends EventEmitter {
168
176
  }
169
177
  });
170
178
  this.socket.on("error", (err) => {
179
+ var _a;
171
180
  this.printDebug("SOCKET ERROR");
172
181
  console.warn("ERROR", err);
182
+ (_a = this.socket) == null ? void 0 : _a.terminate();
183
+ reject(err);
173
184
  });
174
- resolve();
175
185
  });
176
186
  }
177
187
  async connect() {
178
- await this.getEndpoint();
179
- await this._connect();
188
+ try {
189
+ await this.getEndpoint();
190
+ await this._connect();
191
+ } catch (err) {
192
+ if (this.config.autoReconnect && !this.userDisconnect) {
193
+ this.printDebug(
194
+ "Connect failed, retrying in " + this.reconnectInterval / 1e3 + " seconds..."
195
+ );
196
+ setTimeout(() => this.connect(), this.reconnectInterval);
197
+ }
198
+ }
180
199
  }
181
200
  disconnect() {
182
201
  var _a;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dingtalk-stream",
3
- "version": "2.1.4",
3
+ "version": "v2.1.5",
4
4
  "description": "Nodejs SDK for DingTalk Stream Mode API, Compared with the webhook mode, it is easier to access the DingTalk",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",