【发布时间】:2016-11-12 02:31:02
【问题描述】:
我正在尝试在我家的树莓上运行 express-socket.io-angular.js 应用程序。
Express 和 socket.io 在端口 3001 上运行。通过 http://[IP]:3001 访问应用程序可以正常工作。我想通过http://[IP]/ttt 访问该应用程序。
我是这样配置 nginx 的:
location /ttt/ {
proxy_pass http://localhost:3001/;
}
在服务器上我运行这些代码行:
var express = require('express');
var app = express();
var http = require('http').Server(app);
...
app.use(express.static(__dirname + '/public'));
app.use('/node_modules', express.static(__dirname + '/node_modules'));
...
var io = require('socket.io')(http, {path: '/ttt/socket.io'});
...
http.listen(3001, function () {
console.log('Listening on port 3001');
});
在客户端,我像这样包含 socket.io:
<script src="socket.io/socket.io.js"></script>
并像这样连接:
socket: Socket = io.connect({path: "/ttt/socket.io"});
问题:
我获得了所有资源(html、css、js 包括 socket.io.js),但在浏览器日志中我收到错误消息,它无法获得http://[IP]/socket.io/?EIO=3&transport=polling&t=LNGvDUd,其中 t 经常更改。
它报告状态404,很明显,因为nginx在/socket.io没有响应。
提前致谢!
与 jfriend00 的组合结果:
工作设置如下所示:
nginx(找到更多关于正确配置的细节here):
location /ttt/ {
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:3001/;
}
快递:
var io = require('socket.io')(http);
客户端(打字稿):
socket: Socket = io({path: "/ttt/socket.io"});
【问题讨论】:
标签: javascript node.js sockets nginx socket.io