我正在 Heroku 上创建一个 Web 应用程序,我需要在我的 php 应用程序的一部分中进行一些实时数据更新。
所以我想我可以在快递服务器上使用 socket.io 来提供实时通信功能。
当它是 php 构建包时,我应该如何运行该快递。
这是我的包.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"
},
我的程序文件是...
web: vendor/bin/heroku-php-apache2 public/
和我的构建包
$ heroku buildpacks
1. heroku/nodejs
2. heroku/php
当我在 heroku 上部署它时,我在 heroku 日志中没有收到编译错误,但我的 web 应用程序没有从服务器获得 socket.io 实时更新。 在浏览器的控制台日志中,我收到 404 错误 http://myapp.herokuapp.com/socket.io/?EIO=3&transport=polling
我在这里做错了什么?
如果你想运行一个node/express web dyno,你需要在你的procfile中web: npm start
。
然而,听起来你想要一个PHP网络服务器,节点/快递侦听不同的端口。在Heroku上你真的不能这样做。相反,您需要为节点应用程序使用workerdyno。但是,您将无法通过URL直接从前端访问您的workerdyno。相反,您需要执行此处描述的操作。
另请参阅此答案。