В приложении с модулем socket.io и node-mysql, что лучший способ (наиболее оптимизированный и хорошо разработанный) использовать соединения mysql при срабатывании события?Socket.io & 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();
});
});
});
Мой сервер прослушивает несколько событий сокета, и я испытываю много ошибок таймаута! Я думаю, это может быть связано с использованием соединений.
Любые предложения?
Сначала я начал с пула соединений, но в некоторых ситуациях его очень сложно использовать. Вы вынуждены использовать обратный вызов для использования соединения, и это дает мне много проблем, особенно потому, что у моего сервера есть пара setInterval, всегда работающая в фоновом режиме. Соединение было открыто и закрыто каждый тик! Кроме того, у меня всегда была «прочитанная ошибка ETIMEDOUT», которую я не смог исправить, и многие люди жалуются на это! – dorexx45