【问题标题】:Connexion lost after exactly 1 minut / 60 seconds of execution执行 1 分钟/60 秒后连接丢失
【发布时间】:2020-03-31 12:08:52
【问题描述】:

我有一个由 node.js 运行的网络服务器 它使用 Express、Socket.io 和 MySQL

我使用 socket.io 将数据从客户端传输到服务器,也用于调用查询。

在执行 SQL 连接和查询后,服务器在运行 60 秒后开始停止。

index.js 文件中的 SQL 部分:

// SQL

var mysql = require('mysql');
var con = mysql.createConnection({
    host: "...",
    user: "...",
    password: "...",
    database: "..."
});

//Socket.io

var io = require('socket.io') (serv, {});
io.sockets.on('connection', function(socket) {

    // Select

    socket.on("recherche", function(data) {
            if (err) throw err;
            con.query("SELECT * FROM ..", function (err, result, fields) {
                if (err) throw err;
                socket.emit("...", {data: result});
            });
    });

    // Insert into

    socket.on("...", function(data) {
        con.connect(function(err) {
            if (err) throw err;
            var sql = "INSERT INTO ... VALUES (...)";
            con.query(sql, function (err, result) {
                if (err) throw err;
                console.log("1 record inserted");
            });
        });
    });

});

启动服务器后 60 秒内一切正常。 然后,我在 nodejs 控制台中有这个错误消息:

C:\Users\...>node index.js
events.js:187
throw er; // Unhandled 'error' event
^
...
Error: Connection lost: The server closed the connection.
...
fatal: true,
code: 'PROTOCOL_CONNECTION_LOST'

提前感谢您阅读我的问题:D

【问题讨论】:

标签: javascript mysql node.js heroku socket.io


【解决方案1】:
          connection = mysql.createConnection(db_config); // Recreate the connection, since

          connection.connect(function(err) {              
            if(err) {                                    
              console.log('error when connecting to db:', err);
              setTimeout(handleDisconnect, 2000); 
            }                                   
          });                                   

          connection.on('error', function(err) {
            console.log('db error', err);
            if(err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection to the MySQL server is usually
              handleDisconnect();                        
            } else {                                     
              throw err;                                 
            }
          });

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
猜你喜欢
  • 1970-01-01
  • 2013-06-30
  • 2012-06-07
  • 2022-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多