簡體   English   中英

節點mysql池和socket.io

[英]node-mysql pool and socket.io

我目前正在為我的應用程序上的所有用戶使用單個mysql連接。 我想開始使用池(應該對其進行優化,對嗎?),但是我遇到了一個“結構性”問題: createPool方法僅適用於回調,並且我不明白如何將連接傳遞給socket.io事件。

我的意思是,在server.js文件中有一個建立連接的地方

pool.getConnection(function(err, connection) {
    //I'm supposed to use the connection here
}

然后有一個套接字事件被“捕獲”的點

io.sockets.on('connection', function(socket){
    socket.on('userLogin', function(id_user){
        //I need the connection here to run a query with 'id_user'!
    });
});

在第二點中,我需要連接,然后我可以運行

connection.query('SELECT bla bla bla...', function(err, data){
    connection.end();
});

我認為這是為連接到該應用程序的每個用戶建立不同連接的唯一方法,但我真的不明白如何將連接“傳遞”到socket.io“空間”。

在需要時詢問池中的連接:

var pool = mysql.createPool(...);

io.sockets.on('connection', function(socket) {

  socket.on('userLogin', function(id_user) {
    pool.getConnection(function(err, connection) {
      // assuming err was null here...
      connection.query(..., function(err, data) {
        // return the connection to the pool as soon as possible
        connection.end();

        // process data
        ...
      });
    });
  });
});

由於存在池, pool.getConnection()是一個非常便宜的調用,因此按需調用時不會產生太大影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM