【问题标题】:socket.io 1.0 error: ERR_NAME_NOT_RESOLVEDsocket.io 1.0 错误:ERR_NAME_NOT_RESOLVED
【发布时间】:2016-02-09 11:56:31
【问题描述】:

我有一个使用 socket.io 的 node.js 服务器。这个想法是允许两个不同的 html 文件通过这个服务器相互传递信息。在 1.0 版发布之前,socket.io 0.9.16 版一切都很好。现在,我在客户端和服务器端都收到了一些错误,最明显的(对我来说,因为我是新手)是我在启动本地托管的 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 文件中可能出现问题的地方的 sn-ps。

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:4000时没有“Welcome to socket.io”消息我确定应该有这样的消息。请注意,没有 404 错误,当我启动服务器时,我可以访问该网页,但它是空白的。如果服务器没有运行,那么我会收到“找不到网页”消息。

我的问题是:有什么我没有做但应该做的事情吗?正如我所说,我是新手,在互联网上四处寻找之后,我怀疑有一些服务器(HTTP、Express、Express 3/4?)我没有建立。但是,值得注意的是,代码在 ver0.9.16 中的工作方式是(使用从我的代码中删除的 .socket() 和 .listen() 函数以迁移到 ver1.0)。如有遗漏,我会尽我所能尽快提供。

-

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

【问题讨论】:

    标签: socket.io


    【解决方案1】:

    错误中的地址错误(假设你没有设置本地名称解析器)。

    错误中的地址以:

    开头
    file
    

    什么时候应该以类似的开头:

    localhost:4000
    

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

    【讨论】:

    • 天啊,你让我意识到我是在直接加载自己的文件,而不是通过 localhost。耶稣。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      维克拉姆

      【讨论】:

        【解决方案4】:

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

        //socketserver.example.com:8000
        

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

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

        在我的例子中,正确的 URL 原来是:

        http://socketserver.example.com:8000 
        

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

        【讨论】:

          猜你喜欢
          • 2014-08-22
          • 1970-01-01
          • 1970-01-01
          • 2018-04-28
          • 2016-04-15
          • 1970-01-01
          • 2021-02-11
          • 2015-10-06
          • 1970-01-01
          相关资源
          最近更新 更多