Node.js를 통한 Redis 실시간 데이타+조회(+로그인)
- Redis Search & RealTime Push(Exture3.0 Stock)
- Kse 추가
- Kosdaq 추가
- Elw,Etn,Etf 추가

1. 첫화면에서 로그인한다.
2. 로그인정보는 현재 클라이언트의 정보를 서버에 보낸다.
3. 서버에 정보를 보내면서, 동시에 Redis에 접속해서, 실시간데이타를 받아로도록 한다.
// Function to fetch data from Redis list using BLPOP (blocking pop)
async function fetchDataFromRedis() {
console.error('fetchDataFromRedis entered:[' + redisPublicKey + ']');

    try {
        const result = await redisClient.blPop(`QCS:${redisPublicKey}`, 0); // redisPublicKey 사용
        if (result) {
            const data = JSON.parse(result.element);
            return Array.isArray(data) ? data : [data]; // Ensure data is an array
        }
    } catch (err) {
        console.error('Error fetching data from Redis:', err);
    }
    return [];
}

// Polling Redis every second and sending data to WebSocket clients
setInterval(async () => {
    if (redisClient && redisPublicKey && redisPublicKey.length >= 4) { // Redis 클라이언트 연결 여부 체크
        const processedData = await fetchDataFromRedis();
        console.log('Sending data:', processedData); // Log the data being sent
        connectedClients.forEach((client) => {
            if (client.readyState === client.OPEN) {
                client.send(JSON.stringify(processedData));
            }
        });
    }
}, 1000); // 1 second interval
// Redis Public Key 설정 엔드포인트
app.post('/set-public-key', async (req, res) => {
    const { publicKey } = req.body;

    if (publicKey) {
        redisPublicKey = publicKey; // publicKey 업데이트
        console.log('Redis Public Key updated to:', redisPublicKey);
        await connectToRedis(); // Redis에 연결 시도(로그인시에)
        res.json({ message: 'Public Key updated successfully.' });
    } else {
        res.status(400).json({ error: 'Public Key is required.' });
    }
});


로그인후에 Node.js에서 Redis에 접속을 시도한다.)

- NODE.SERVER
- REDIS.TICKER.SERVER
- 실시간 PUSH & 조회

app.js
0.01MB
index.html
0.10MB

+ Recent posts