在使用socket.io和node-mysql模块的应用程序中,触发事件时使用mysql连接的最佳方法(最优化和精心设计)是什么?
让我们编写一些代码来更好地解释
案例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();
});
});
});
我的服务器侦听多个套接字事件,我遇到了很多超时错误!我认为这可能与连接的使用有关。
有什么建议吗?
答案 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,可用于防止通过单个连接运行多个查询时可能出现的问题。