Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/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
Javascript 在nginx后面的子位置运行socket.io_Javascript_Node.js_Sockets_Nginx_Socket.io - Fatal编程技术网

Javascript 在nginx后面的子位置运行socket.io

Javascript 在nginx后面的子位置运行socket.io,javascript,node.js,sockets,nginx,socket.io,Javascript,Node.js,Sockets,Nginx,Socket.io,我正试图在我家的树莓上运行一个express-socket.io-angular.js应用程序 Express和socket.io正在端口3001上运行。访问应用程序时一切正常。我想访问位于的应用程序 我将nginx配置为: location /ttt/ { proxy_pass http://localhost:3001/; } <script src="socket.io/socket.io.js"></script> socket: Socket = i

我正试图在我家的树莓上运行一个express-socket.io-angular.js应用程序

Express和socket.io正在端口3001上运行。访问应用程序时一切正常。我想访问位于的应用程序

我将nginx配置为:

location /ttt/ {
    proxy_pass http://localhost:3001/;
}
<script src="socket.io/socket.io.js"></script>
socket: Socket = io.connect({path: "/ttt/socket.io"});
在服务器上,我运行以下代码行:

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,如下所示:

location /ttt/ {
    proxy_pass http://localhost:3001/;
}
<script src="socket.io/socket.io.js"></script>
socket: Socket = io.connect({path: "/ttt/socket.io"});
问题是:

我得到了所有的资源(html、css、js,包括socket.io.js),但是在browserlog中我得到了错误消息,它无法得到t经常变化的地方

很明显,它会报告状态404,因为nginx不会在/socket.io处响应

提前谢谢


与jfriend00的组合结果:

工作设置如下所示:

location /ttt/ {
    proxy_pass http://localhost:3001/;
}
<script src="socket.io/socket.io.js"></script>
socket: Socket = io.connect({path: "/ttt/socket.io"});
nginx(找到有关正确配置的更多详细信息):

快递:

var io = require('socket.io')(http);
客户端(类型脚本):


如果我正确理解您的代理配置,它将在转发到端口3001之前从路径中剥离
/ttt
。因此,服务器上的socket.io初始化不正确

更改此项:

var io = require('socket.io')(http, {path: '/ttt/socket.io'});
为此:

var io = require('socket.io')(http);
编辑:


并且,确保加载到浏览器中的客户端文件实际上是最新编辑的客户端文件。您可以使用浏览器中的View/Source查看它,以查看您正在运行的文件。

如果我正确理解您的代理配置,它将在转发到端口3001之前从路径中删除
/ttt
。因此,服务器上的socket.io初始化不正确

更改此项:

var io = require('socket.io')(http, {path: '/ttt/socket.io'});
为此:

var io = require('socket.io')(http);
编辑:


并且,确保加载到浏览器中的客户端文件实际上是最新编辑的客户端文件。您可以使用浏览器中的View/Source进行检查,以查看您正在运行的文件。

感谢您的快速响应!是的,您正确理解了我的代理设置。我试过了,但浏览器仍然试图获取/socket.io/。。。在错误的URL上,我不知道客户端代码中的这个语法是什么意思:
socket:socket=io.connect({path://ttt/socket.io})。它在客户端中对我起作用:
socket=io({path://ttt/socket.io})
。抱歉,但我仍然在http://[IP]/socket.io/?EIO=3&transport=polling&t=lngvdudud上收到404错误。您指的是语法的哪一部分?@Stefan-有些东西与您在客户端中显示的不一样,因为
路径
选项到
io()
io.connect()
将更改客户端在那里请求的URL。我自己也试过。它起作用了。您正在运行哪个版本的socket.io?是否确实没有其他位置的socket.io连接,或者确实正在编辑正确的客户端源文件,并且缓存了旧的客户端源文件?l您可以在浏览器中执行查看/源操作,以查看它正在运行的页面。我发现了错误,我的IDE配置为在保存时自动上载文件。在我编译了ts文件之后,它没有更新服务器上的js文件。。。。非常感谢您的帮助,并告诉我检查从服务器获得的文件:)感谢您的快速响应!是的,您正确理解了我的代理设置。我试过了,但浏览器仍然试图获取/socket.io/。。。在错误的URL上,我不知道客户端代码中的这个语法是什么意思:
socket:socket=io.connect({path://ttt/socket.io})。它在客户端中对我起作用:
socket=io({path://ttt/socket.io})
。抱歉,但我仍然在http://[IP]/socket.io/?EIO=3&transport=polling&t=lngvdudud上收到404错误。您指的是语法的哪一部分?@Stefan-有些东西与您在客户端中显示的不一样,因为
路径
选项到
io()
io.connect()
将更改客户端在那里请求的URL。我自己也试过。它起作用了。您正在运行哪个版本的socket.io?是否确实没有其他位置的socket.io连接,或者确实正在编辑正确的客户端源文件,并且缓存了旧的客户端源文件?l您可以在浏览器中执行查看/源操作,以查看它正在运行的页面。我发现了错误,我的IDE配置为在保存时自动上载文件。在我编译了ts文件之后,它没有更新服务器上的js文件。。。。非常感谢您的帮助,并告诉我检查从服务器获取的文件:)