Socket.io客户端无法连接到localhost,因为它可以连接到127.0.0.1

时间:2017-02-07 12:22:25

标签: node.js socket.io localhost

我使用node.js设置了服务器,我正在尝试使用socket.io连接到服务器。服务器曾经在2个月前完美地工作但由于某种原因它不再起作用了。服务器代码如下所示:

var http = require('http');
var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello World\n");
});

var io = require('socket.io')(server);    

io.sockets.on('connection', function (socket) {
 console.log ('Client connected.'); });

console.log ('Server started.');
server.listen(3000, '0.0.0.0');

在我的客户端,我正在使用

socket = io.connect("http://localhost:3000");

尝试连接到我的服务器,但它不起作用。如果我使用

行,连接将完美运行
socket = io.connect("http://127.0.0.1:3000");

如果我在浏览器上键入localhost:3000,它会将我发送到预设Hello World的页面,与127.0.0.1相同,所以只有在我使用io.connect时它才能正常工作。

我尝试过的事情是:

  • 更改主机文件(添加行127.0.0.1 localhost,删除包含:: 1的行,生成新的主机文件并覆盖它)
  • 在不同的机器上尝试,仍然是同样的问题
  • 重置路由器设置。
  • 在cmd提示符下ping localhost,它说来自:: 1的回复:时间< 1ms
  • 安装不同版本的socket.io和node.js(两个月前最新版本和版本)

考虑到从web浏览器发生的事情,localhost似乎可以正常工作,但只有当我使用socket.io时它才能工作。我一直无法解决突然出现的这个问题,所以如果有人能给我一些可能导致这个问题的见解,我会非常感激。

1 个答案:

答案 0 :(得分:0)

这似乎是IPv4 / IPv6问题。您可以尝试更改此内容:

server.listen(3000, '0.0.0.0');

到此:

server.listen(3000, '::1');

或者这个:

server.listen(3000);