Ably 如何与 Vercel 合作?

问题描述 投票:0回答:1

我使用 Ably 作为我的 Express 应用程序的提供商。 Vercel 本身建议使用 Ably 等来管理 Websocket。

问题是,一旦我部署的应用程序成功连接到 Ably,它就无法再发布或订阅频道。似乎有什么东西阻碍了任何方向的通讯。一切都在本地主机上完美运行,所以我怀疑问题与 Vercel 的配置有关。

这里是项目中用到的依赖:

  "devDependencies": {
    "@types/jest": "^29.5.12",
    "@types/mongoose": "^5.11.97",
    "@types/uuid": "^9.0.8",
    "dotenv": "^16.4.5",
    "eslint": "^9.0.0",
    "eslint-config-prettier": "^9.1.0",
    "eslint-config-standard-with-typescript": "^43.0.1",
    "eslint-plugin-import": "^2.25.2",
    "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
    "eslint-plugin-prettier": "^5.1.3",
    "eslint-plugin-promise": "^6.0.0",
    "jest": "^29.7.0",
    "nodemon": "^3.1.0",
    "pre-commit": "^1.2.2",
    "prettier": "^3.2.5",
    "ts-jest": "^29.1.4",
    "ts-loader": "^9.5.1",
    "tsx": "^4.9.3",
    "typescript": "^5.4.5",
    "webpack": "^5.91.0",
    "webpack-cli": "^5.1.4"
  },
  "dependencies": {
    "@types/cors": "^2.8.17",
    "@types/express": "^4.17.21",
    "@types/node": "^20.11.22",
    "@typescript-eslint/eslint-plugin": "^7.0.0",
    "@typescript-eslint/parser": "^7.1.0",
    "ably": "^2.0.4",
    "cors": "^2.8.5",
    "express": "^4.19.2",
    "fp-ts": "^2.16.6",
    "io-ts": "^2.2.21",
    "mongodb": "^6.6.0",
    "mongoose": "^8.3.3",
    "random-words": "^2.0.1",
    "uuid": "^9.0.1"
  }

vercel.json
是:

{
  "version": 2,
  "builds": [
    {
      "src": "dist/bundle.js",
      "use": "@vercel/node",
      "config": { "includeFiles": ["dist/**"] }
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "dist/bundle.js",
      "methods": ["GET", "POST", "PATCH", "DELETE", "OPTIONS"],
      "headers": {
        "Access-Control-Allow-Origin": "*"
      }
    }
  ]
}

知道这可能是什么原因造成的吗?

node.js express deployment vercel ably-realtime
1个回答
0
投票

问题在于 Vercel 的后端函数(无服务器函数)有默认执行超时。这意味着大约 10 秒内,Able 连接就会超时。结果,后端订阅没有触发。在本地计算机上没有执行超时,这就是它工作正常的原因。

Vercel 的后端作为无服务器功能运行,设计为无状态且短暂的。 Ably Realtime 的连接是持久的,并随着时间的推移保持状态。

您可以探索多种选项:

  • 使用常规 Ably Rest 客户端实例进行发布。通过 Ably Realtime 在客户端订阅,并使用简单的 REST API 从前端调用必要的后端逻辑。
  • 如果第一个选项不适合您,请使用 Ably Webhooks
© www.soinside.com 2019 - 2024. All rights reserved.