Jelajahi Sumber

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 2 tahun lalu
induk
melakukan
5fdc0d2545
3 mengubah file dengan 9 tambahan dan 3 penghapusan
  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(