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
Sockets Socket.io将端口添加到url_Sockets_Express_Heroku_Socket.io - Fatal编程技术网

Sockets Socket.io将端口添加到url

Sockets Socket.io将端口添加到url,sockets,express,heroku,socket.io,Sockets,Express,Heroku,Socket.io,我正在尝试连接到heroku上的socket.io服务器。我在端口8080上用一个简单的express服务器为我的主干客户端提供服务。当我尝试这样做时: io.connect('https://test16793.herokuapp.com/'); 我得到: 获取网络::错误连接被拒绝 但是,当我刚刚打开index.html文件时,它会毫无问题地连接到heroku。使用express提供服务时,在heroku链接尝试连接之前,端口号似乎已添加到heroku链接的末尾 有人知道我能做些什么吗?尝

我正在尝试连接到heroku上的socket.io服务器。我在端口8080上用一个简单的express服务器为我的主干客户端提供服务。当我尝试这样做时:

io.connect('https://test16793.herokuapp.com/');
我得到:

获取网络::错误连接被拒绝

但是,当我刚刚打开index.html文件时,它会毫无问题地连接到heroku。使用express提供服务时,在heroku链接尝试连接之前,端口号似乎已添加到heroku链接的末尾


有人知道我能做些什么吗?

尝试使用
var-port=process.env.port | 8080用于应用程序端口,而不是
8080

当您在端口443(未指定端口时用于https连接的端口)上连接到heroku上的子域时,heroku可能正在使用代理或路由器将传入连接路由到node.js服务器正在侦听的特定端口。在Heroku基础设施中,他们知道服务器运行的实际内部主机以及它运行的实际端口号,因此可以将子域上的默认端口请求映射到实际端口/主机

这样,浏览器就可以在默认端口上直接连接到您的子域,而不必知道节点服务器安装的详细信息,这样Heroku就可以自动管理您的服务器,并可能与其他客户共享硬件。您每个人都在不同的端口上运行,但共享同一台计算机。端口完全由Heroku管理,这是一种方式,它们可以将多个客户放在同一硬件上,而不必在浏览器URL中指定自定义端口(这对于大多数客户来说是不可能的)

因此,Heroku正在为您的子域托管某种代理,该代理正在侦听默认的https端口。因此,您不必在URL中指定端口。在内部,它们将该连接路由到实际服务器上的实际端口

在桌面上运行时,没有这样的代理来为您执行此操作,因此您必须确保客户端和服务器端口号匹配