【问题标题】:Socket.io mysql connection errorSocket.io mysql连接错误
【发布时间】:2017-01-08 07:07:57
【问题描述】:

当我在 npm 上启动我的套接字时,我的 Mysql 连接将下降大约 30 秒。我不知道为什么。 mysql 插入方法有效。但是当我等待大约 1 分钟 -30 秒时,连接关闭。

这是错误代码;

events.js:141 投掷者; // 未处理的“错误”事件 ^

错误:连接丢失:服务器关闭了连接。 在 Protocol.end (C:\xampp\htdocs\tem\node_modules\mysql\lib\protocol\Protocol.js:109:13) 在套接字。 (C:\xampp\htdocs\tem\node_modules\mysql\lib\Connection.js:115:28) 在 emitNone (events.js:72:20) 在 Socket.emit (events.js:166:7) 在 endReadableNT (_stream_readable.js:921:12) 在 nextTickCallbackWith2Args (node.js:442:9) 在 process._tickCallback (node.js:356:17)

这是我的源代码;

var app = require('express')();
var mysql = require("mysql");
var http=require('http').Server(app);
var io=require('socket.io')(http);
var con = mysql.createConnection({
    host: "hostname",
    user: "username",
    password: "pw",
    database: "db"
});
con.connect(function(err){
    if(err){
        console.log('UnSuccesfull');
        return;
    }
    console.log('Succesfull');
});
app.get("/",function(req,res){

    res.sendfile(__dirname+"/asd.html");

});
io.on('connection',function(socket){

    var UserLog={
        Log:'A User Connected'
    };
    con.query('Insert Into Log SET ?',UserLog ,function(err){
        if(err)
            console.log(err);
    });
});
var port=xx;
http.listen(port,'xx.xx.xx');

【问题讨论】:

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


【解决方案1】:

我向你推荐,使用连接池。

你可以这样创建连接池;

var pool  = mysql.createPool({
connectionLimit : 60,
host    : hostname,
user    : dbUser,
password: dbPass,
database: dbName,
multipleStatements: true
});

当你需要在mysql上运行查询时;

pool.getConnection(function(err, connection) {
            connection.query( "SELECT * FROM `users`", function(err, users) {
                connection.release();
            });
        });

【讨论】:

  • Hocam 4 saniyede bir mysql boş sorgu yapsam SELECT X FROM Y diye sıkıntı cıkar mı ? aynı mantık olsa gerek
  • @MuhammedAlmaz sıkıntı çıkartacağını sanmıyorum, ayrıca limit 1 diyerek biraz daha az yük bindirmiş olursun.
  • Tamamdır hocam o şekilde yapayım :) eyvallah
【解决方案2】:

io.on('connect')*

数据库规则是否正确?

【讨论】:

  • if(err) throw err;
猜你喜欢
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 2023-01-04
  • 2020-04-27
  • 2014-06-26
  • 2017-12-14
相关资源
最近更新 更多