浏览代码

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 年之前
父节点
当前提交
5fdc0d2545
共有 3 个文件被更改,包括 9 次插入3 次删除
  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(