Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मेरे सॉकेट.आईओ स्ट्रीम में प्राप्त डेटा नहीं भेज सकता?

आपको पूल बनाना चाहिए, और उस पूल पर getConnection का उपयोग करना चाहिए। फिर, जब आप कनेक्शन के साथ काम कर लें, तो उसे छोड़ दें। इसके अतिरिक्त, आपको पोलिंगलूप को रोकने या प्रत्येक कनेक्शन के लिए इसे शुरू करने की आवश्यकता नहीं है, एक लूप पर्याप्त है।

मुझे शर्तों के साथ if कथन समझ में नहीं आया, इसलिए मैंने इसे छोड़ दिया। इसे कहीं और जाने की संभावना है।

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. बड़ी मात्रा में डेटा वितरित करने वाली क्वेरी के लिए इष्टतम MySQL सेटिंग्स?

  2. कुछ तालिकाओं से चुनें mysql

  3. MySQL:क्वेरी का चयन करें, 5 मिनट की वृद्धि

  4. तैयार स्टेटमेंट SQL त्रुटि

  5. ऑर्डर के साथ औसत कैसे प्राप्त करें द्वारा Desc Laravel 5 . में