瀏覽代碼

feat(xmpp): trigger CONNECTION_FAILED when closed unintentionally

If Strophe drops the connection while not being asked to, it means that
most likely some serious error has occurred. One currently known case is
when a BOSH request fails for more than 4 times then the connection is
dropped without supplying a reason through the Strophe API
(the connection status simply goes to DISCONNECTED).
dev1
paweldomas 9 年之前
父節點
當前提交
2271d2953e
共有 1 個檔案被更改,包括 12 行新增0 行删除
  1. 12
    0
      modules/xmpp/xmpp.js

+ 12
- 0
modules/xmpp/xmpp.js 查看文件

@@ -146,6 +146,7 @@ export default class XMPP {
146 146
         } else if (status === Strophe.Status.DISCONNECTED) {
147 147
             // Stop ping interval
148 148
             this.connection.ping.stopInterval();
149
+            const wasIntentionalDisconnect = this.disconnectInProgress;
149 150
             const errMsg = msg ? msg : this.lastErrorMsg;
150 151
             this.disconnectInProgress = false;
151 152
             if (this.anonymousConnectionFailed) {
@@ -157,6 +158,17 @@ export default class XMPP {
157 158
                 this.eventEmitter.emit(
158 159
                     JitsiConnectionEvents.CONNECTION_FAILED,
159 160
                     JitsiConnectionErrors.OTHER_ERROR, errMsg);
161
+            } else if (!wasIntentionalDisconnect) {
162
+                // XXX if Strophe drops the connection while not being asked to,
163
+                // it means that most likely some serious error has occurred.
164
+                // One currently known case is when a BOSH request fails for
165
+                // more than 4 times. The connection is dropped without
166
+                // supplying a reason(error message/event) through the API.
167
+                logger.error("XMPP connection dropped!");
168
+                this.eventEmitter.emit(
169
+                    JitsiConnectionEvents.CONNECTION_FAILED,
170
+                    JitsiConnectionErrors.OTHER_ERROR,
171
+                    errMsg ? errMsg : 'connection-dropped-error');
160 172
             } else {
161 173
                 this.eventEmitter.emit(
162 174
                     JitsiConnectionEvents.CONNECTION_DISCONNECTED, errMsg);

Loading…
取消
儲存