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 & 조회
'java 언어 > Node.Server' 카테고리의 다른 글
Agent 데이타 수집을 통한 Application Monitoring Service 적용(1) (0) | 2024.11.07 |
---|---|
Node.js를 통한 Redis 실시간 Push+조회(+로그인)(5+) (0) | 2024.10.27 |
외부VPN을 통한 HOME.LINUX(NODE.SERVER+TICK.SERVER) 조회 (0) | 2024.10.16 |
증권정보.홈페이지(Infra.Introduction) (0) | 2024.10.13 |
Ubuntu Linux에 Node.JS.Sever와 조회+실시간 적용(1) (0) | 2024.10.12 |