Socket.io& Mysql:连接多少?

时间:2013-04-26 20:25:50

标签: mysql node.js socket.io

在使用socket.io和node-mysql模块的应用程序中,触发事件时使用mysql连接的最佳方法(最优化和精心设计)是什么?

  1. 创建一个连接并将其传递给回调
  2. 每次调用回调时都创建一个连接
  3. 让我们编写一些代码来更好地解释

    案例1

    var connection = mysql.createConnection({
        host     : 'example.org',
        user     : 'bob',
        password : 'secret',
    });
    
    io.sockets.on('connection', function cb1(){
        socket.on('event', function cb2(){
            connection.connect(function cb3(){
                connection.query();
            });
        });
    });
    

    案例2

    io.sockets.on('connection', function cb1(){
        socket.on('event', function cb2(){
            var connection = mysql.createConnection({
                host     : 'example.org',
                user     : 'bob',
                password : 'secret',
            });
            connection.connect(function cb3(){
                connection.query();
            });
        });
    });
    

    我的服务器侦听多个套接字事件,我遇到了很多超时错误!我认为这可能与连接的使用有关。

    有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我认为最好的办法是一直打开一个连接,然后在socket.io事件中运行查询。像这样:

var connection = mysql.createConnection({
host     : 'example.org',
user     : 'bob',
password : 'secret',
});
connection.connect(function cb3(){
    io.sockets.on('connection', function cb1(){
    socket.on('event', function cb2(){
            connection.query();
        });
    });
});

答案 1 :(得分:0)

我会查看连接池,is implemented by node-mysql。这样做的好处是能够使用多个连接到数据库,同时保持连接总数有限,以防止泛滥数据库服务器。

另一种可能是node-mysql-queues,可用于防止通过单个连接运行多个查询时可能出现的问题。