【问题标题】:socket.io and pm2 start process.ymlsocket.io 和 pm2 启动 process.yml
【发布时间】: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


【解决方案1】:

pm2 集群模式不适用于 socket.io 粘性会话。在这里查看我的问题How to make sticky session works with socket.io?

你可以强制socket.io使用websocket

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2015-12-22
    • 2015-12-26
    • 2021-04-11
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多