Procházet zdrojové kódy

@uppy/companion: handle ws `'error'` event (#5167)

to prevent companion from crashing with RangeError: Max payload size exceeded
Mikael Finstad před 11 měsíci
rodič
revize
1ac7f9c55e
1 změnil soubory, kde provedl 10 přidání a 0 odebrání
  1. 10 0
      packages/@uppy/companion/src/server/socket.js

+ 10 - 0
packages/@uppy/companion/src/server/socket.js

@@ -48,6 +48,16 @@ module.exports = (server) => {
     emitter().emit(`connection:${token}`)
     emitter().on(token, send)
 
+    ws.on('error', (err) => {
+      // https://github.com/websockets/ws/issues/1543
+      // https://github.com/websockets/ws/blob/b73b11828d166e9692a9bffe9c01a7e93bab04a8/test/receiver.test.js#L936
+      if (err?.name === 'RangeError' && 'code' in err && err.code === 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH') {
+        logger.error('WebSocket message too large', 'websocket.error', shortenToken(token))
+      } else {
+        logger.error(err, 'websocket.error', shortenToken(token))
+      }
+    })
+
     ws.on('message', (jsonData) => {
       const data = JSON.parse(jsonData.toString())
       // whitelist triggered actions