Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không thể gửi dữ liệu đã tìm nạp đến luồng socket.io của tôi?

Bạn nên tạo một nhóm và sử dụng getConnection trên nhóm đó. Sau đó, khi bạn đã hoàn tất kết nối, hãy giải phóng nó. Ngoài ra, bạn không cần phải dừng pollingLoop hoặc khởi động nó cho mỗi kết nối, một vòng lặp là đủ.

Tôi không hiểu câu lệnh if với các điều kiện, vì vậy tôi đã bỏ qua nó. Nó có thể cần phải đi một nơi khác.

var socketArr = [];

function handler(req, res) {
    res.statusCode = 200;
    res.connection.setTimeout(0);
    res.end();
}
app.listen(port, ip);
var pool = mysql.createPool({
    host     : 'example.org',
    user     : 'bob',
    password : 'secret'
});

function pollingLoop () {
    if (socketArr.length === 0) {
        // no connections, wait and try again
        setTimeout(pollingLoop, 1000);
        return; // continue without sending mysql query
    }
    pool.getConnection(function (err, connection) {
        if (err) {
            console.log({
                "code": 100,
                "status": "Error in connection database"
            });
            return;
        }
        console.log('connected as id ' + connection.threadId);
        var selection = "SELECT * FROM auctions";
        var streamArray = [],
            lg = '';
        var query = connection.query(selection, function (err, results, fields, rows) {
            lg += ('id: ' + results[0].id + ' (' + results[0].duration + ') ');
            /*if (conditions) {
                var query_update = connection.query('UPDATE `auctions` SET `price` = ? WHERE `id` = ?', [price, auction.id]);
                console.log(time() + 'UPDATED id ' + auction.id + ': price (' + price + '€)');
            }*/
            streamArray.push(results);
            updateSockets({
                streamArray: streamArray
            });
            console.log("auctions pushed: " + streamArray);
            connection.release();
            setTimeout(pollingLoop, 1000);
        });
        console.log(time() + lg + ' C: ' + socketArr.length);
    });
}
// start loop
pollingLoop();

io.sockets.on('connection', function (socket) {
    socket.on('disconnect', function () {
        var socketIndex = socketArr.indexOf(socket);
        console.log(time() + 'SOCKET-ID = %s DISCONNECTED', socketIndex);
        if (~socketIndex) {
            socketArr.splice(socketIndex, 1);
        }
    });
    console.log(time() + 'NEW SOCKET CONNECTED!');
    socketArr.push(socket);
});
var updateSockets = function (data) {
    socketArr.forEach(function (tmpSocket) {
        tmpSocket.volatile.emit('stream', data);
    });
};



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. json_encode cho truy vấn mysql trả về một số cột rỗng của một số hàng, nhưng các cột không rỗng

  2. Tại sao mysqli đưa ra lỗi Lệnh không đồng bộ?

  3. chọn nhiều hàng trong một hàng kết quả

  4. XÓA KHỎI ĐẾM CÓ (*) trong MySQL

  5. Truy vấn mySQL phức tạp trong trang php