如何在 Heroku multi buildpack php + nodejs 中启动快速服务器

How to start express server in Heroku multi buildpack php + nodejs

我正在 Heroku 上创建一个网络应用程序,我需要在我的 php 应用程序的一部分中进行一些实时数据更新。

所以我想我可以在 express 服务器上使用 socket.io 来提供实时通信功能。

当它是 php buildpack 时,我应该如何 运行 表达。

这是我的 package.json 脚本部分

"scripts": {
    "dev": "cross-env NODE_ENV=development webpack --config config/config.dev.js",
    "build": "cross-env NODE_ENV=production webpack --config config/config.prod.js",
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

我的 procfile 是...

web: vendor/bin/heroku-php-apache2 public/

和我的构建包

$ heroku buildpacks
1. heroku/nodejs
2. heroku/php

当我在 heroku 上部署它时,我在 heroku 日志中没有收到编译错误,但我的 webapp 没有从 socket.io 服务器获得实时更新。 在浏览器的控制台日志中,我在 http://myapp.herokuapp.com/socket.io/?EIO=3&transport=polling

上收到 404 错误

我这里哪里做错了?

如果你想 运行 一个 node/express web dyno,你需要在你的 procfile 中添加 web: npm start

不过听起来您想要一个 PHP 网络服务器,node/express 侦听不同的端口。你不能在 Heroku 上真正做到这一点。相反,您需要为您的节点应用程序配备一个 worker dyno。但是,您将无法通过 URL 从前端直接访问您的 worker dyno。相反,您需要做一些类似于 here 所描述的事情。

另见 this answer