ERR_CONNECTION_REFUSED http:// localhost:3000 / socket.io / socket.io.js

时间:2015-12-12 23:44:26

标签: javascript node.js html5 firefox socket.io

Ciao,我正在实现一个webRTC多对多视频会议系统,实际上,我已经做到了,我使用socket.IO作为信令服务器,一切都很顺利,我使用EnterpriseDB Apache为我提供服务端口(8081)上的.html文件和端口(3000)上的socket.IO服务的Node.js,它在localhost中像魅力一样工作,没有错误,我的ISSUE用于我的公共IP的外部访问,我正在测试我的朋友和这些浏览服务:www.browserstack.com和www.browserling.com(试用版)。

  • 使用www.browserstack.com,一切都可以正常使用mozilla 42或chrome 47

  • www.browserling.com,我收到了这些错误

    Firefox 41:ReferenceError:未定义io

    Chrome 45:无法加载资源             http://localhost:3000/socket.io/socket.io.js             网:: ERR_CONNECTION_REFUSED             未捕获的ReferenceError:未定义io

  • 和我的朋友们一样,我遇到了与www.browserling.com相同的问题,但他们使用最新的浏览器版本(Chrome 47和Firefox 42)连接到我的PC服务器。

    < / LI>

我认为这不是浏览器版本问题,问题在于提供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>

这是我的服务器网址,如果有人想尝试: http://201.209.104.33:8081/webrtcexamples/avq.html

2 个答案:

答案 0 :(得分:7)

localhost是一个特殊的主机名,指向与请求它的计算机相同的计算机。因此,使用与您不同的计算机并尝试连接到localhost的任何人都会尝试连接到自己的计算机,而不是您自己的计算机。由于服务器未在其计算机上运行,​​因此很明显会出现“连接被拒绝”错误。

您需要将localhost替换为全局可访问的地址(域名或IP地址)。这也意味着您需要让您的路由器将您的外部IP地址映射到运行此端口的服务器的计算机(否则它们将连接到您的路由器,而不是您的服务器)。

答案 1 :(得分:2)

尝试io.connect("http://201.209.104.33:3000");而不是io.connect("http://localhost:3000");

修改

您需要在正在使用的服务器上运行套接字。因此,如果您在PC上运行它,您的朋友电脑将无法看到它,因为当它连接到localhost时,它将尝试连接到他们的电脑的localhost。不是你的。

之前我遇到过同样的问题。您需要从服务器上运行它,以便每个人都可以连接到它。