在子位置的 nginx 后面运行 socket.io
Running socket.io behind nginx at a sublocation
我正在尝试在家中的覆盆子上运行一个快速 socket.io 角度.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(在此处找到有关正确配置的更多详细信息):
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"});
如果我
正确理解您的代理配置,它将在转发到端口 3001 之前从路径中剥离/ttt
。 因此,服务器上的 socket.io 初始化不正确。
更改此设置:
var io = require('socket.io')(http, {path: '/ttt/socket.io'});
对此:
var io = require('socket.io')(http);
编辑:
并且,请确保加载到浏览器中的客户端文件实际上是最新编辑的客户端文件。 您可以使用浏览器中的"查看/源"进行检查,以准确查看正在运行的文件。
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- Socket.IO:重新连接导致服务器连接代码运行两次
- 从 Socket.io 通知运行代码
- 是否可以在node.js服务器上设置一个运行(服务器端)的socket.io客户端
- node.js+socket.io无法在heroku上运行
- 我应该运行Socket的哪个端口?IO服务器打开
- 如何运行Socket.IO应用程序在我的服务器上
- 错误:require.paths已删除.当运行node.js&socket.io
- 使用socket.io在Node.js上运行server.js文件有问题
- 找不到socket.Io-client在nodejs服务器上运行
- 在node.js上使用socket-io的Http服务器没有运行
- 使用公共IP运行/socket.io/socket.io.js
- Socket.IO-node'当尝试运行node.js样板项目时
- 通过nodejs运行外部程序,通过socket.io与浏览器交互
- 在子位置的 nginx 后面运行 socket.io