我正在使用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路径等。
任何帮助,都是很有帮助的!
我一直在苦苦挣扎一天,所以我想我会寻求帮助:)
答案 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;
}
}