ERR_CONNECTION_REFUSED http://localhost:3000/socket.io/socket.io.js
ERR_CONNECTION_REFUSED http://localhost:3000/socket.io/socket.io.js
再见,我正在实现一个 webRTC many-to-many 视频会议系统,实际上,我已经做到了,我正在使用 socket.IO 作为信令服务器,一切都非常顺利,我正在使用 EnterpriseDB Apache 用于在端口 (8081) 上提供我的 .html 文件,Node.js 用于在端口 (3000) 上提供 socket.IO对于使用我的 public IP 的外部访问,我正在与我的朋友和这些浏览服务进行测试:www.browserstack.com 和 www.browserling.com(试用版)。
with www.browserstack.com, mozilla 42 或 chrome 47
一切正常
和 www.browserling.com,我得到了这些错误
Firefox 41: ReferenceError: io 未定义
Chrome 45: 加载资源失败
http://localhost:3000/socket.io/socket.io.js
net::ERR_CONNECTION_REFUSED
未捕获的 ReferenceError:未定义 io
和我的朋友们,我遇到了与 www.browserling.com 相同的问题,但他们使用最新的浏览器版本(Chrome 47 和 Firefox 42)连接到我的PC服务器.
我认为这不是浏览器版本问题,问题在于提供 socket.io.js 文件,最后,这是我的代码:
它只显示了解决此问题的重要事项:
///NODE.JS DIRECTORY
////////////////////serverside.js
var port = 3000;
var io = require('socket.io').listen(port);
io.sockets.on('connection', function (socket){.........}
///APACHE DIRECTORY
////////////////////clientside.js
//Connect to signalling server
var socket = io.connect("http://localhost:3000");
////////////////////avq.html
<!DOCTYPE html>
<html lang="es">
<head><meta charset="UTF-8">
</head>
<body>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script src="js/clientside.js"></script>
</body>
</html>
这是我的服务器 URL 如果有人想尝试:
http://201.209.104.33:8081/webrtcexamples/avq.html
localhost
是一个特殊的主机名,它指向与请求它的计算机相同的计算机。因此,任何使用与您不同的计算机并尝试连接到 localhost
的人都会尝试连接到自己的计算机,而不是您的计算机。由于服务器不在他们的计算机上 运行,他们很明显会收到 "connection refused" 错误。
您需要将localhost
替换为全球可访问的地址(域名或IP地址)。这也意味着您需要让您的路由器将您的外部 IP 地址映射到您的计算机 运行 此端口的服务器(否则它们将连接到您的路由器,而不是您的服务器)。
尝试 io.connect("http://201.209.104.33:3000");
而不是 io.connect("http://localhost:3000");
编辑
您需要运行 服务器上正在使用的套接字。所以如果你在你的电脑上 运行 它,你朋友的电脑将看不到它,因为当它连接到 localhost
时,它会尝试连接到他们电脑的 localhost
。不是你的。
我之前遇到过同样的问题。您需要 运行 将它从服务器上移除,以便每个人都可以连接到它。
再见,我正在实现一个 webRTC many-to-many 视频会议系统,实际上,我已经做到了,我正在使用 socket.IO 作为信令服务器,一切都非常顺利,我正在使用 EnterpriseDB Apache 用于在端口 (8081) 上提供我的 .html 文件,Node.js 用于在端口 (3000) 上提供 socket.IO对于使用我的 public IP 的外部访问,我正在与我的朋友和这些浏览服务进行测试:www.browserstack.com 和 www.browserling.com(试用版)。
with www.browserstack.com, mozilla 42 或 chrome 47
一切正常
和 www.browserling.com,我得到了这些错误
Firefox 41: ReferenceError: io 未定义
Chrome 45: 加载资源失败 http://localhost:3000/socket.io/socket.io.js net::ERR_CONNECTION_REFUSED 未捕获的 ReferenceError:未定义 io
和我的朋友们,我遇到了与 www.browserling.com 相同的问题,但他们使用最新的浏览器版本(Chrome 47 和 Firefox 42)连接到我的PC服务器.
我认为这不是浏览器版本问题,问题在于提供 socket.io.js 文件,最后,这是我的代码:
它只显示了解决此问题的重要事项:
///NODE.JS DIRECTORY
////////////////////serverside.js
var port = 3000;
var io = require('socket.io').listen(port);
io.sockets.on('connection', function (socket){.........}
///APACHE DIRECTORY
////////////////////clientside.js
//Connect to signalling server
var socket = io.connect("http://localhost:3000");
////////////////////avq.html
<!DOCTYPE html>
<html lang="es">
<head><meta charset="UTF-8">
</head>
<body>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script src="js/clientside.js"></script>
</body>
</html>
这是我的服务器 URL 如果有人想尝试: http://201.209.104.33:8081/webrtcexamples/avq.html
localhost
是一个特殊的主机名,它指向与请求它的计算机相同的计算机。因此,任何使用与您不同的计算机并尝试连接到 localhost
的人都会尝试连接到自己的计算机,而不是您的计算机。由于服务器不在他们的计算机上 运行,他们很明显会收到 "connection refused" 错误。
您需要将localhost
替换为全球可访问的地址(域名或IP地址)。这也意味着您需要让您的路由器将您的外部 IP 地址映射到您的计算机 运行 此端口的服务器(否则它们将连接到您的路由器,而不是您的服务器)。
尝试 io.connect("http://201.209.104.33:3000");
而不是 io.connect("http://localhost:3000");
编辑
您需要运行 服务器上正在使用的套接字。所以如果你在你的电脑上 运行 它,你朋友的电脑将看不到它,因为当它连接到 localhost
时,它会尝试连接到他们电脑的 localhost
。不是你的。
我之前遇到过同样的问题。您需要 运行 将它从服务器上移除,以便每个人都可以连接到它。