Explorar el Código

fix(price-service/server): add max payload size

By default ws library has max payload size of 100 MiB but actually the
biggest valid call is 20 KiB. This change sets the limit to 100 KiB to
add more resilliency on the web socket. The biggest call size can
increase when there are new symbols but this service is not going to
live seeing the 5x current price feeds!
Ali Behjati hace 2 años
padre
commit
5fdc0d2545
Se han modificado 3 ficheros con 9 adiciones y 3 borrados
  1. 3 1
      package-lock.json
  2. 1 1
      price_service/server/package.json
  3. 5 1
      price_service/server/src/ws.ts

+ 3 - 1
package-lock.json

@@ -30588,6 +30588,7 @@
       "version": "4.0.5",
       "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz",
       "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==",
+      "hasInstallScript": true,
       "optional": true,
       "dependencies": {
         "node-gyp-build": "^4.3.0"
@@ -30917,6 +30918,7 @@
       "version": "5.0.7",
       "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz",
       "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==",
+      "hasInstallScript": true,
       "optional": true,
       "dependencies": {
         "node-gyp-build": "^4.3.0"
@@ -57546,7 +57548,7 @@
     },
     "price_service/server": {
       "name": "@pythnetwork/price-service-server",
-      "version": "3.1.0",
+      "version": "3.1.1",
       "license": "Apache-2.0",
       "dependencies": {
         "@certusone/wormhole-sdk": "^0.9.9",

+ 1 - 1
price_service/server/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@pythnetwork/price-service-server",
-  "version": "3.1.0",
+  "version": "3.1.1",
   "description": "Webservice for retrieving prices from the Pyth oracle.",
   "private": "true",
   "main": "index.js",

+ 5 - 1
price_service/server/src/ws.ts

@@ -215,7 +215,11 @@ export class WebSocketAPI {
   }
 
   run(server: http.Server): WebSocketServer {
-    const wss = new WebSocketServer({ server, path: "/ws" });
+    const wss = new WebSocketServer({
+      server,
+      path: "/ws",
+      maxPayload: 100 * 1024, // 100 KiB
+    });
 
     wss.on("connection", (ws: WebSocket, request: http.IncomingMessage) => {
       logger.info(