Socket.io,代码始终返回错误net :: ERR_CONNECTION_TIMED_OUT

时间:2019-12-24 04:03:45

标签: javascript node.js sockets socket.io

这是前一个问题的一个重写问题,涉及一个更具体的问题,但是,我相信我已将其范围缩小到重新格式化后的代码中得到的单个错误代码。虽然我已经为发现客户端脚本和服务器端脚本的最新语法进行了大量研究,但它仍然返回相同的错误,这使我相信它可能与服务器有关以某种方式进行设置。虽然我希望情况并非如此,但我认为发布更具体的问题可能有助于缩小问题范围,以解决所有潜在的解决方案。

服务器端代码已更改,我相信,它的语法完全没有问题,因为(至少是用于打开套接字io路径的相关部分)是从另一个人直接复制的他们为服务器端脚本提供了当前良好的格式。它发布在下面

const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.php');
});

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

io.on('disconnect', function(data){
    console.log('Client disconnected');  
    });

server.listen(8002, function(){
  console.log('listening on *:8002');
});

module.exports = app;

对于任何想知道的人,端口8002是我专门为nodejs打开的端口,并且不干扰其他任何功能,即AFAIK。

现在转到客户端代码,这是我假定问题所在的位置。它已经尝试了一些更改,以尝试遵循最新的解决方案来解决其他类似类型的问题,但是仍然无法正常工作。

        <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
        <script>
            const socket = io('http://mywebsite.com:8002');
            socket.on("connect",function(){
                console.log("socket connected");
            });
            socket.on("disconnect",function(){
                console.log("socket disconnected");
            });
        </script>

导航到该站点时,除了“正在*:8002监听”(显然仅指示服务器端脚本没有加载问题)之外,没有任何内容记录到服务器端或客户端控制台。显然,这表明没有从客户端创建服务器之间的连接,但是由于打开的端口是8002(客户端指向的端口),所以我不确定为什么它不创建连接。在网站上停留几秒钟后,出现了多个GET http://mywebsite.com:8002/socket.io/?EIO=3&transport=polling&t=Mys3YWR net::ERR_CONNECTION_TIMED_OUT错误,是从index.js:83发出的。​​

这应该是我问题的结尾,但是情节变厚了。我刚回到商店,发现当我关闭计算机时,计算机先连接后断开,然后在服务器终端上记录“客户端已连接”,在网站上记录“套接字已连接”。为什么在我关闭计算机后会创建套接字,我不知道,所以我希望有人可以给我一个线索。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

找到了自己的解决方案,这简直太简单了,我觉得自己是个白痴。我确定我遇到的一些问题是由于上一个有关类似主题的问题中的代码错误导致的,但是在这种情况下(使用我列出的代码已在2019年使用socket.io 2.3.0进行了验证)是我的问题我将io连接指定为mywebsite.com:8002,将其替换为IP:8002网站使代码正常工作。为什么这样做有很大的不同,我有一些猜测,但没有什么可靠的依据,因为该网站有两个名称服务器,因此它可能已经中继到另一个没有任何节点依赖项的名称服务器上。