Node.js WebSocket 错误:在重新连接几次后出现 read ECONNRESET。

3
我的node.js客户端应用使用ws npm包连接到第三方WebSocket API,以便持续发送/接收数据。有时,由于短暂的服务中断(至少我认为是这个原因),服务器关闭连接,我的应用程序需要重新建立连接。
在此帖子中,我得到了一种有效的解决方案,适用于某些重新连接,但然后我的应用程序崩溃了: (Node-js: Not receiving events after websocket reconnect,由用户Yury Fedorov发布)。
const WS = require('ws');
var BFX = new WS('bfxs://api.uri.com/ws/2');

function createWebsocket() {
    const websocket = new BFX().ws(2, opts);
    websocket.on('open', /* code */);
    websocket.open();
}

当调用 on('close') 时:

websocket.on('close', ()=>{
     setTimeout(createWebsocket, 10000);
});

我收到的错误信息是:Error: read ECONNRESET 我安装了npm包longjohn以获取更长的堆栈跟踪,但我无法解释更长的堆栈跟踪:
    ________________________________________________________
        Error: read ECONNRESET
            at _errnoException (util.js:1022:11)
            at TLSWrap.onread (net.js:615:25)`
    ____________________________________________
        at TLSSocket.Readable.on (_stream_readable.js:772:35)
        at Ultron.on (/home/user/core/node_modules/ultron/index.js:42:11)
        at WebSocket.setSocket (/home/user/core/node_modules/ws/lib/WebSocket.js:131:18)
        at ClientRequest._req.on (/home/user/core/node_modules/ws/lib/WebSocket.js:715:10)
        at emitThree (events.js:136:13)
        at ClientRequest.emit (events.js:217:7)
        at TLSSocket.socketOnData (_http_client.js:472:11)
        at emitOne (events.js:116:13)
        at TLSSocket.emit (events.js:211:7)
        at addChunk (_stream_readable.js:263:12)
        at readableAddChunk (_stream_readable.js:250:11)
        at TLSSocket.Readable.push (_stream_readable.js:208:10)
        at TLSWrap.onread (net.js:594:20)
    ____________________________________________
        at WebSocket.initAsClient (/home/user/core/node_modules/ws/lib/WebSocket.js:657:13)
        at new WebSocket (/home/user/core/node_modules/ws/lib/WebSocket.js:72:20)
        at startWebsocket (/home/user/core/myApp.js:76:11)
        at Timeout.<anonymous> (/home/user/core/myApp.js:117:31)
        at ontimeout (timers.js:475:11)
        at tryOnTimeout (timers.js:310:5)
        at Timer.listOnTimeout (timers.js:270:5)
        ____________________________________________
        at WebSocket.bfx.onclose (/home/user/core/myApp.js:117:9)
        at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
        at emitTwo (events.js:126:13)
        at WebSocket.emit (events.js:214:7)
        at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
        at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
        at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
        at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
        at emitNone (events.js:111:20)
        at TLSSocket.emit (events.js:208:7)
        at endReadableNT (_stream_readable.js:1055:12)
        at _combinedTickCallback (internal/process/next_tick.js:138:11)
        at process._tickCallback (internal/process/next_tick.js:180:9)
    ____________________________________________
        at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
        at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
        at startWebsocket (/home/user/core/myApp.js:115:14)
        at Timeout.<anonymous> (/home/user/core/myApp.js:117:31)
        at ontimeout (timers.js:475:11)
        at tryOnTimeout (timers.js:310:5)
        at Timer.listOnTimeout (timers.js:270:5)
    ____________________________________________
        at WebSocket.bfx.onclose (/home/user/core/myApp.js:117:9)
        at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
        at emitTwo (events.js:126:13)
        at WebSocket.emit (events.js:214:7)
        at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
        at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
        at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
        at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
        at emitNone (events.js:111:20)
        at TLSSocket.emit (events.js:208:7)
        at endReadableNT (_stream_readable.js:1055:12)
        at _combinedTickCallback (internal/process/next_tick.js:138:11)
        at process._tickCallback (internal/process/next_tick.js:180:9)
    ____________________________________________
        at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
        at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
        at startWebsocket (/home/user/core/myApp.js:115:14)
        at Object.init (/home/user/core/myApp.js:212:3)
        at main (/home/user/core/core_main.js:143:16)
        at <anonymous>
        at process._tickCallback (internal/process/next_tick.js:188:7)

 - What is causing the crash? 
 - Can I catch the error somewhere and react
   to it better? 
 - How can I debug this better?
 - Thank you!

UPDATE: 
user keja reminded me to add `websocket.on('error', (err) => console.log('error:', err));` to my listeners. The result is a similar but longer stack trace of the error message:

ON ERROR:
{ Error: read ECONNRESET
    at _errnoException (util.js:1022:11)
    at TLSWrap.onread (net.js:615:25)
____________________________________________
    at startWebsocket (/home/user/core/myApp.js:136:6)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitNone (events.js:111:20)
    at TLSSocket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1055:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitNone (events.js:111:20)
    at TLSSocket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1055:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitNone (events.js:111:20)
    at TLSSocket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1055:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Timeout.<anonymous> (/home/user/core/myApp.js:120:31)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)
____________________________________________
    at WebSocket.bfx.onclose (/home/user/core/myApp.js:120:9)
    at WebSocket.onClose (/home/user/core/node_modules/ws/lib/EventTarget.js:103:16)
    at emitTwo (events.js:126:13)
    at WebSocket.emit (events.js:214:7)
    at WebSocket.emitClose (/home/user/core/node_modules/ws/lib/WebSocket.js:211:10)
    at _receiver.cleanup (/home/user/core/node_modules/ws/lib/WebSocket.js:199:39)
    at Receiver.cleanup (/home/user/core/node_modules/ws/lib/Receiver.js:520:15)
    at WebSocket.finalize (/home/user/core/node_modules/ws/lib/WebSocket.js:199:20)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
____________________________________________
    at WebSocket.addEventListener (/home/user/core/node_modules/ws/lib/EventTarget.js:121:12)
    at WebSocket.set (/home/user/core/node_modules/ws/lib/WebSocket.js:434:12)
    at startWebsocket (/home/user/core/myApp.js:118:14)
    at Object.init (/home/user/core/myApp.js:224:3)
    at main (/home/user/core/core_main.js:143:16)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7) code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }
1个回答

2
根据文档,可以监听到错误事件。因此,您可以尝试以下操作:
websocket.on('error', (err) => console.log('error:', err));

也许这能指向你出现了什么问题的方向。

谢谢您的快速回答。我确信我的应用程序中有.on(error)但它可能在无尽的调试尝试中丢失了。现在堆栈跟踪甚至稍微更长,但据我所知,它具有相同的含义,即重新连接阶段和添加事件侦听器时出现问题。更新问题。 - oystersauce
重新连接期间出现的错误是否是由于在那时仍然持续的API服务器的(假定的)服务中断引起的? - oystersauce
你可以尝试在createWebsocket函数内部加入try/catch块,并在catch块中设置重新连接的超时时间。这样它就会变成递归,直到建立连接为止。像这样:https://jsfiddle.net/1rcrt4v4/ - keja
目前看来,在采纳了您的建议后,连接仍然会中断(这似乎是服务器问题),并且会抛出错误。但是我的客户端应用程序仍然可以在一段时间后重新连接并正常运行。非常感谢! - oystersauce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接