Nodejs(sailsjs),NGINX和sails.io(socket.io)

时间:2015-01-20 18:56:21

标签: node.js sockets nginx sails.js

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

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

这是我当前APP的网址路径: 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 (){}
        }
    });

添加资源:'经济',行。 然后在客户端我做了同样的事情:

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

我一直在玩这个并试过不同的方法,比如“economic / socket.io”,完整的socket.io路径等。

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

我一直在苦苦挣扎一天,所以我想我会寻求帮助:)

3 个答案:

答案 0 :(得分:3)

您不需要在Sails端更改任何内容。尝试在nginx中读取您的位置指令的proxy_pass。

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";
}

答案 1 :(得分:2)

<强>解<!/强>

按原样运行所有内容,您必须编辑的唯一部分是NGINX。

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

答案 2 :(得分:0)

示例显示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;
    }
}