Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs(sailsjs)、NGINX和sails.io(socket.io)_Node.js_Sockets_Nginx_Sails.js - Fatal编程技术网

Node.js Nodejs(sailsjs)、NGINX和sails.io(socket.io)

Node.js Nodejs(sailsjs)、NGINX和sails.io(socket.io),node.js,sockets,nginx,sails.js,Node.js,Sockets,Nginx,Sails.js,我正在使用NGINX来处理我的Nodejs服务器,现在我想开始在这些服务器上使用socket.io,在开始使用socket.io之前进行研究。我发现了Sailsjs,这是我逐渐发现的,现在正在使用 但我遇到的问题是,客户端无法通过socket.io或sails.io上的NGINX进行连接 这是我当前应用的URL路径: 作为标准,sails.io的url为: 现在! 通过使用FileSeek,我找到了sails.js使用“require”(“socket.io”)”的位置,它位于“loadSo

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

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

这是我当前应用的URL路径:

作为标准,sails.io的url为:

现在! 通过使用FileSeek,我找到了sails.js使用“require”(“socket.io”)”的位置,它位于“loadSocketIO.js”(node\u modules\sails\lib\hooks\sockets\lib)中。我将文件编辑为:

var io = sails.io = sails.ws =
    SocketServer.listen(sails.hooks.http.server, {
  resource: 'economy',
        logger: {
            info: function (){}
        }
    });
添加资源:'economy',行。 然后在客户端,我也做了同样的事情:

var socket = io.connect('https://localhost/economy/socket.io', { resource: 'economy' });
我一直在使用它,并尝试了不同的方法,比如“economy/socket.io”、完整的socket.io路径等等

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


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

解决方案

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

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

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

这是上述链接的摘录:

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";
}
这个例子对我很有用

基本上,对于nginxwebsocket支持,您需要包括以下配置

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

@我会的。这就是为什么我写了我的答案。你能编辑一下@HeadCode吗。我想确认一下,我已经投了你一票。@csmu谢谢你,尽管我承认我不理解为什么我需要这么做。我按错了箭头。当我试图纠正它时,我被告知我的回答被锁定,除非对答案进行编辑。因此,我向你提出了一个问题。你能详细说明这个答案吗?我对nginx真的很陌生;您需要使用NGINX创建子域并将其转发到流。