socket.io 1.0错误:ERR_NAME_NOT_RESOLVED

时间:2014-07-25 00:49:08

标签: socket.io

我有一个使用socket.io的node.js服务器。这个想法是允许两个不同的html文件通过这个服务器相互通信。一切都很好用socket.io ver0.9.16直到1.0版出来。现在,我在客户端和服务器端都收到一些错误,最明显的(对我来说,因为我刚接触到这个)是我在启动本地托管的server.js文件时发现的ERR_NAME_NOT_RESOLVED错误并尝试通过客户端html连接到它。

当我在谷歌浏览器中打开控制台时,我发现此错误每隔一秒左右再次打印到控制台:

GET http://file/socket.io/?EIO=2&transport=polling&t=1406247171961-0 net::ERR_NAME_NOT_RESOLVED 

以下是我的html和server.js文件以及我的html文件用来连接服务器的js文件中可能出现问题的地方片段。

的index.html

我认为这段代码从localhost服务器获取socket.io客户端代码。这是我认为我遇到问题的第一个地方

<script src="http://localhost:4000/socket.io/socket.io.js "></script> 

此外,以下是我导入index.js文件的位置,该文​​件用于连接服务器

<script type="text/javascript" src="scriptsTeacher.js" ></script>

-

server.js

此代码(根据我的消息来源)应在localhost上设置一个服务器,端口为4000,客户端可以连接并发送/接收信息

 var io;
 io = require('socket.io').listen(4000);
 io.on('connection', function(socket) 
 {   
    console.log("user connected");
 });

-

index.js

此代码由index.html使用,它使用socket.io连接到侦听端口4000的服务器。

var socket = io.connect('localhost:4000');

-

目前,我可以找到两个明显的错误。它们可能不是问题的根源,但只要我有限的调试经验可以带我去。

  1. ERR_NAME_NOT_RESOLVED:(注意:我查看了socket.io ERR_NAME_NOT_RESOLVED,因为该用户使用http:\\而不是http:/来输入错误,所以它并不完全有用/)。如前所述,在Google Chrome中打开index.html并访问控制台时,我收到多个ERR_NAME_NOT_RESOLVED错误。

  2. 访问localhost时没有“欢迎使用socket.io”消息:4000 我确定应该有这样的消息。请注意,没有404错误,当我启动服务器时,我可以访问该网页,但它是空白的。如果服务器没有运行,那么我会收到“找不到网页”消息。

  3. 我的问题是:我有什么不做但应该做的吗?正如我所说,我是新手,在互联网上狩猎之后,我怀疑有一些服务器(HTTP,Express,Express 3/4?)我没有建立。但是,需要注意的是,代码的工作方式与ver0.9.16相同(使用.socket()和.listen()函数,这些函数已从我的代码中删除,以便迁移到ver1.0)。如果有任何遗失的信息,我会尽快提供。

    -

    我正在使用:
    Macintosh OS 10.6.8
    谷歌浏览器版本36.0.1985.125
    socket.io ver1.0
    node.js v0.10.29

4 个答案:

答案 0 :(得分:5)

错误中的地址错误(假设您尚未设置本地名称解析程序)。

错误中的地址以:

开头
file

什么时候应该开头:

localhost:4000

问题可能出在Web应用程序(而非服务器)的某些js-config文件中。或者您可能尝试在本地访问该文件(例如,只需在浏览器中打开html文件),而不是键入地址localhost:4000

答案 1 :(得分:1)

我遇到了在浏览器中运行文件的相同问题: 例如。     &#34;文件:/// C:/apppath/index.html" 尝试从服务器运行 例如。     &#34; http://your.app:4000/index.html&#34;

答案 2 :(得分:0)

我遇到了类似的问题,但我的问题的解决方案与CORS无关。在我的情况下,这是一个使用socket.io的Cordova 4.0.0应用程序,我使用了错误的URL作为套接字服务器。我正在使用这样的套接字服务器URL:

//socketserver.example.com:8000

这在桌面Chrome浏览器中运行良好,但在手机或模拟器上的Cordova webview中,有很多关于以

开头的URL的GET和POST请求失败的错误
http://file/socket.io

我的案例中的正确网址原为:

http://socketserver.example.com:8000 

请注意URL开头的完整方案。

答案 3 :(得分:0)

我遇到了同样的问题 - 我无法通过Mac上同一台机器上的客户端连接到我的socket.io服务器。我禁用了防火墙,它解决了这个问题。我想我们可以使用xhr-polling来克服这个问题。

维克拉姆