【问题标题】:Nodejs (sailsjs), NGINX and sails.io (socket.io)Nodejs (sailsjs)、NGINX 和sails.io (socket.io)
【发布时间】:2015-03-19 03:19:01
【问题描述】:

我正在使用 NGINX 来处理我的 Nodejs 服务器,现在我想开始在它们上使用 socket.io,在开始使用 socket.io 之前进行研究,我发现了 Sailsjs,我越来越发现它现在正在使用。

我遇到的问题是,客户端无法通过 socket.io 或sails.io 上的NGINX 进行连接。

这是我当前应用的 URL 路径: https://localhost/economy

作为标准,sails.io 的网址是: https://localhost/economy/assets/js/dependencies/sails.io.js

现在! 使用 FileSeek,我发现sails.js 在哪里使用“require(”socket.io")”,它位于“loadSocketIO.js”(node_modules\sails\lib\hooks\sockets\lib) 中。我编辑了文件说:

var io = sails.io = sails.ws =
    SocketServer.listen(sails.hooks.http.server, {
  resource: 'economy',
        logger: {
            info: function (){}
        }
    });

添加 resource: 'economy', 行。 然后在客户端我也做了同样的事情:

var socket = io.connect('https://localhost/economy/socket.io', { resource: 'economy' });

我一直在玩这个并尝试了不同的方法,例如“economy/socket.io”、完整的 socket.io 路径等。

任何帮助,都是很大的帮助!

我已经挣扎了一天,所以我想我会寻求一些帮助:)

【问题讨论】:

    标签: node.js sockets nginx sails.js


    【解决方案1】:

    示例显示 here 为我工作。

    基本上对于 nginx WebSocket 支持,您需要包含以下配置。

    server {
        server_name app.domain.com;
        location / {
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_pass http://localhost:8080;
        }
    }
    

    【讨论】:

      【解决方案2】:

      解决方案!

      按原样运行所有内容,您唯一需要编辑的部分是在 NGINX 中。

      设置服务器名称为economy.localhost/的服务器块,你就完成了:) 请记住将经济.localhost 链接到 127.0.0.1 或者如果这是生产服务器,请设置一个 cname :)

      【讨论】:

      • 你能详细说明一下这个答案吗?我对 nginx 真的很陌生。
      • 基本上;您需要使用 NGINX 创建一个子域并将其转发到流。
      【解决方案3】:

      您不需要更改 Sails 方面的任何内容。尝试阅读 proxy_pass 以了解您在 Nginx 中的位置指令。

      http://nginx.org/en/docs/http/websocket.html

      这是上面链接的摘录:

      location /chat/ {
      
          proxy_set_header        X-Real-IP       $remote_addr;
          proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      
          proxy_pass http://localhost:1337;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
      }
      

      【讨论】:

      • @sciencefyll 我做到了。这就是我写答案的原因。
      • 你能编辑一下@HeadCode。我想确认我对你投了赞成票。
      • @csmu 谢谢你,虽然我承认我不明白为什么我需要这样做。
      • 我按错了箭头。当我试图纠正它时,我被告知我的回复已被锁定,除非对答案进行了编辑。因此我向你提出问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 2015-06-10
      • 2013-07-16
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 2020-10-05
      相关资源
      最近更新 更多