socket.io和pm2启动process.yml

时间:2018-06-01 22:13:34

标签: node.js npm socket.io yaml pm2

当我使用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时,群集启动,一切似乎都在工作,直到我访问网站,然后游戏因套接字问题而出现控制台错误。

1 个答案:

答案 0 :(得分:0)

pm2群集模式不适用于socket.io sticky-session。在此处查看我的问题How to make sticky session works with socket.io?

你可以强制socket.io使用websocket