我有一个使用 socket.io 的 Node.js 服务器。这个想法是允许两个不同的 html 文件通过该服务器相互传递信息。在 1.0 版发布之前,socket.io ver0.9.16 一切都很好。现在,我在客户端和服务器端都收到了一些错误,最明显的(对我来说,因为我是新手)是我在启动本地托管的 server.js 文件并尝试执行以下操作时发现的 ERR_NAME_NOT_RESOLVED 错误:通过客户端 html 连接到它。
当我在 Google Chrome 中打开控制台时,我发现此错误每隔一秒左右就会再次打印到控制台:
GET http://file/socket.io/?EIO=2&transport=polling&t=1406247171961-0 net::ERR_NAME_NOT_RESOLVED
以下是我的 html 和 server.js 文件以及 html 文件用于连接到服务器的 js 文件中可能出现问题的地方的片段。
索引.html
我认为这段代码从本地主机服务器获取 socket.io 客户端代码。这是我可能认为我有问题的第一个地方
<script src="http://localhost:4000/socket.io/socket.io.js "></script>
另外,以下是我导入用于连接到服务器的index.js文件的位置
<script type="text/javascript" src="scriptsTeacher.js" ></script>
-
服务器.js
这段代码(根据我的来源)应该在本地主机上设置一个端口 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');
-
目前,我可以发现两个明显的错误。它们可能不是问题的根源,但就我有限的调试经验而言,它们是问题的根源。
ERR_NAME_NOT_RESOLVED:(注:我看过socket.io ERR_NAME_NOT_RESOLVED https://stackoverflow.com/questions/24510159/socket-io-err-name-not-resolved而且它并不完全有用,因为该用户使用了 http:\\ 而不是 http://)。如前所述,在 Google Chrome 中打开 index.html 并访问控制台时,我收到多个 ERR_NAME_NOT_RESOLVED 错误。
访问 localhost:4000 时没有“Welcome to socket.io”消息我确信应该有这样的消息。请注意,没有出现 404 错误,当我启动服务器时,我可以访问该网页,但它是空白的。如果服务器没有运行,那么我确实会收到“找不到网页”消息。
我的问题是:有什么是我没有做但应该做的吗?正如我所说,我对此很陌生,在互联网上进行一番搜索后,我怀疑有一些服务器(HTTP、Express、Express 3/4?)我没有建立。然而,值得注意的是,该代码在 ver0.9.16 中按原样工作(使用 .socket() 和 .listen() 函数,这些函数已从我的代码中删除以迁移到 ver1.0)。如果有任何信息缺失,我会尽力尽快提供。
-
我在用:
麦金塔操作系统 10.6.8
谷歌浏览器版本 36.0.1985.125
socket.io 版本1.0
Node.js v0.10.29