Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Socket.io,代码返回错误net::ERR\u CONNECTION\u TIMED\u_Javascript_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript Socket.io,代码返回错误net::ERR\u CONNECTION\u TIMED\u

Javascript Socket.io,代码返回错误net::ERR\u CONNECTION\u TIMED\u,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,这是一个从上一个问题改写过来的问题,关于一个更具体的问题,但是,我相信我已经把它缩小到了一个错误代码,我用重新格式化的代码得到了这个错误代码。虽然我已经做了很多研究来发现客户端和服务器端脚本的最新语法,但它仍然返回相同的错误,这让我相信它可能与我的服务器设置有某种关系。虽然我希望情况并非如此,但我认为发布一个更具体的问题可能有助于缩小任何潜在解决者的问题范围 服务器端代码已经更改,我相信它在语法上没有任何问题,因为(至少是打开套接字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>

常量套接字=io('http://mywebsite.com:8002');
socket.on(“连接”,函数(){
控制台日志(“套接字连接”);
});
socket.on(“断开”,函数(){
控制台日志(“套接字断开”);
});
导航到站点时,除了“侦听*:8002”之外,服务器端或客户端控制台上都没有记录任何内容,这显然只表明服务器端脚本在加载时没有问题。这显然表明服务器之间没有从客户端创建连接,但由于端口打开为8002(客户端指向的端口),我不确定它为什么不创建连接。在网站上几秒钟后,多个
GEThttp://mywebsite.com:8002/socket.io/?EIO=3&transport=polling&t=Mys3YWR net::ERR\u CONNECTION\u TIMED\u OUT
错误出现在index.js:83中


我的问题本该到此为止,但情节越来越复杂;我刚从商店回来,注意到当我关闭电脑时,电脑先连接,然后断开,在服务器终端上记录“客户端已连接”,在网站上记录“套接字已连接”。为什么它会在我关掉电脑时产生插座,我不知道,我希望有人能给我一个线索。非常感谢您的帮助。

我找到了自己的解决方案,它几乎是如此简单,我觉得自己像个白痴。我确信我遇到的一些问题是由于我之前关于类似主题的问题中的错误代码造成的,但在这种情况下(我列出的代码在2019年通过socket.io 2.3.0验证有效),我的问题是我将io连接指定为mywebsite.com:8002,用网站IP:8002替换它使代码正常工作。为什么会有这么大的不同,我有一些猜测,但没有确凿的证据,因为网站有两个名称服务器,它可能被转发到另一个没有任何节点依赖关系的服务器上

您可以首先在客户端中添加
错误
事件的句柄:
socket.on('error',function(e){console.log('error',e);})并查看是否显示任何内容。当您说您关闭了计算机时,是客户端还是服务器?服务器是一个VPS,不在我的计算机上,因此它只是客户端,我添加了您要求我包括的那一行,除了原始帖子中提到的相同错误之外,控制台中没有任何内容被登录,除了加载资源失败的新错误:net::ERR_CONNECTION_TIMED_OUT from:8002/socket.io/?EIO=3&transport=polling&t=MysIrF5:1
,基于此新错误和没有错误,我建议它没有加载socket io依赖项但我不知道那会是什么,因为链接是有效的。这在一段时间内起了作用,一直持续到现在。刚刚关闭了节点文件,因为我正在更新它,然后再次打开它,问题又出现了。当我恢复到旧文件时,并没有更改文件中的任何内容,问题仍然是一样的。见鬼,更新;这段代码仍然有效,我想我有一些后端服务器设置问题,这些问题导致了重新启动nodejs的问题,我刚刚让它在服务器上全天候运行,并在代码发生时对其进行流式更新。我今天去上班了,在返回套接字连接时,它工作得非常完美,不确定到底是什么问题,但就目前而言,这显然不是理想的解决方法。