sql >> データベース >  >> RDS >> Mysql

フェッチしたデータをsocket.ioストリームに送信できませんか?

    プールを作成し、そのプールでgetConnectionを使用する必要があります。次に、接続が完了したら、それを解放します。さらに、pollingLoopを停止したり、接続ごとに開始したりする必要はありません。1つのループで十分です。

    条件付きの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. mysqlのストアコードを確認し、結果がtrueを返した場合にテーブルを更新するにはどうすればよいですか?

    2. Oracleを使用して特定のテーブルの削除を監査するにはどうすればよいですか?

    3. SQLServer-NATURAL JOIN / x JOIN y USING(フィールド)の欠如

    4. 何百万ものレコードを挿入するときにSQLServerでログの増加を防ぐにはどうすればよいですか?