Ciao,我正在实现webRTC多对多视频会议系统,实际上,我已经做到了,我使用socket.IO作为信令服务器,一切都很顺利,我使用EnterpriseDB Apache来提供我的.html文件在端口(8081)和Node.js上为端口(3000)上的socket.IO提供服务,它在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 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
这是我的服务器URL,如果有人想尝试:http://201.209.104.33: 8081 /webrtcexamples/avq.html
localhost
是一个特殊的主机名,指向与请求它的计算机相同的计算机.因此,使用与您的计算机不同并尝试连接的任何人都localhost
将尝试连接到自己的计算机,而不是您的计算机.由于服务器未在其计算机上运行,因此很明显会出现"连接被拒绝"错误.
您需要替换localhost
为全局可访问的地址(域名或IP地址).这也意味着您需要让路由器将您的外部IP地址映射到运行此端口的服务器的计算机(否则它们将连接到您的路由器,而不是您的服务器).