일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 오공완
- 리액트
- 클래스 추가하기 #특정 url 클래스 추가 #사이트 접속시 클래스 추가 #오공완 #javascript
- 리스트랜더링
- map()에는 key값이 필요
- 오공완 #리액트 공부 #React
- React
- Today
- Total
new_bird-hyun
Next.js에서 Server-Sent Events(SSE)와 WebSocket 비교 및 실시간 데이터 처리 본문
- Server-Sent Events(SSE)와 WebSocket의 차이점
- SSE를 활용한 실시간 데이터 스트리밍
- Next.js에서 SSE를 구현하여 서버에서 클라이언트로 실시간 데이터 전송
pages/api/sse.js (SSE API 라우트)
export default function handler(req, res) {
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Connection', 'keep-alive');
const sendEvent = (data) => {
res.write(`data: ${JSON.stringify(data)}\n\n`);
};
sendEvent({ message: '연결 성공!' });
const interval = setInterval(() => {
sendEvent({ time: new Date().toLocaleTimeString() });
}, 3000);
req.on('close', () => {
clearInterval(interval);
});
}
components/SSEClient.js (SSE 클라이언트)
'use client';
import { useEffect, useState } from 'react';
export default function SSEClient() {
const [messages, setMessages] = useState([]);
useEffect(() => {
const eventSource = new EventSource('/api/sse');
eventSource.onmessage = (event) => {
setMessages((prev) => [...prev, JSON.parse(event.data)]);
};
return () => eventSource.close();
}, []);
return (
<div>
<h2>SSE 실시간 데이터</h2>
<ul>
{messages.map((msg, index) => (
<li key={index}>{msg.time || msg.message}</li>
))}
</ul>
</div>
);
}
app/page.js
import SSEClient from '../components/SSEClient';
export default function Home() {
return (
<div>
<SSEClient />
</div>
);
}
- SSE는 서버에서 클라이언트로 단방향 데이터 스트리밍을 제공하는 간단한 방식
- WebSocket과의 차이점 및 각각의 활용 사례 비교
'코딩 공부' 카테고리의 다른 글
Next.js + Firebase Cloud Messaging(FCM) 푸시 알림을 실무에 적용할 때 고려할 점 (0) | 2025.03.22 |
---|---|
Next.js에서 SSE(Server-Sent Events)와 Zustand를 활용한 실시간 알림 배지 시스템 구현 (0) | 2025.03.19 |
Next.js와 WebSocket을 활용한 실시간 채팅 애플리케이션 구현 (0) | 2025.03.16 |
Next.js에서 Zustand와 SWR을 활용한 실시간 데이터 동기화 전략 (0) | 2025.03.14 |
Zustand와 서버 컴포넌트(Server Components)를 결합하여 상태 관리 최적화하기 (0) | 2025.03.12 |