当我使用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有关吗?当我试图为zeyeland上运行的nodejs app配置我的反向代理时,我得到了类似的错误:3000到zeyeland / bomber-kids-online。
我添加到服务器上的.bashrc文件中以配置pm2群集的代码是
cd /var/www/html/bomber-kids && pm2 start process.yml && cd ~
当我运行pm2 start process.yml
时,群集启动,一切似乎都在工作,直到我访问网站,然后游戏因套接字问题而出现控制台错误。
答案 0 :(得分:0)
pm2群集模式不适用于socket.io sticky-session。在此处查看我的问题How to make sticky session works with socket.io?
你可以强制socket.io使用websocket