【发布时间】:2018-06-01 22:13:33
【问题描述】:
当我使用pm2 start process.yml 时,我的javascript 游戏应用程序将无法运行。当我使用npm start 而不是pm2 start process 时,游戏运行良好。服务器上的 index.js 文件加载但随后给我错误,例如:
WebSocket connection to 'ws://www.zeyeland.com:3000/socket.io/?EIO=3&transport=websocket&sid=gwcGq7h5vHrxBGOyAAAA' failed: WebSocket is closed before the connection is established.
和
GET http://www.zeyeland.com:3000/socket.io/?EIO=3&transport=polling&t=MEzN2OK&sid=gwcGq7h5vHrxBGOyAAAA 400 (Bad Request)
当我使用npm start 启动我的服务器时,我的程序再次顺利运行。
这是我的 process.yml 文件
apps:
- script: node index.js
watch: true
instances: 4
exec_mode: cluster
env:
NODE_ENV: development
env_production:
NODE_ENV: production
package.json
{
"name": "sockets",
"version": "0.0.1",
"description": "web sockets demo",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "^4.16.3",
"socket.io": "^2.1.1"
}
}
可能是什么问题?它与我的 apache2 reverseProxy 有关吗?早些时候,当我尝试为在 zeeyeland:3000 上运行的 nodejs 应用程序配置反向代理到 zeeyeland/bomber-kids-online 时,我遇到了类似的错误。
我添加到我服务器上的 .bashrc 文件中以配置我的 pm2 集群的代码是
cd /var/www/html/bomber-kids && pm2 start process.yml && cd ~
当我运行pm2 start process.yml 时,集群启动并且一切似乎都在工作,直到我访问网站,然后游戏由于套接字问题而出现控制台错误。
【问题讨论】:
-
我尝试为 socket.io 硬编码我的脚本 src。路径是:myNodjsApp.com/node_modules/socket.io-client/dist/socket.io.js" 有了这个到 socket.io 组件的直接路由,我的 pm2 process.yml 仍然无法正常工作,但可以与 npm start 一起正常工作。nodejs websockts 是否与 reverseProxy 和 apache 兼容?
-
pm2启动进程配置不同的执行路径,尝试使用这个命令启动pm2:pm2 start npm --start
-
感谢!谢谢大佬,这就是诀窍。什么等等,所以我使用了错误的命令?等待“ pm2 start process.yml ”吗?它启动四个集群并在崩溃前运行端口 3000。使用您建议的“ pm2 start npm -- start ”启动集群下方的 npm fork。这很奇怪,因为我昨晚在研究时创建了这个正在运行的 npm fork。我不记得artilce。我对此一无所知,但遵循了指示。你能解释一下这些过程发生了什么吗?再次感谢!
-
请使用 pm2 日志分享日志,以便我们更好地了解您的问题。
-
这些文件在哪里?在我服务器上的 /etc/pm 文件中?
标签: node.js npm socket.io yaml pm2