채팅 기능 정리
1. 데이터 구조
@Entity
@Table(name = "chat_room")
public class ChatRoom {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long chatRoomId;
@ManyToOne
@JoinColumn(name = "company_id")
private Company company;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@Column(nullable = false)
private LocalDateTime createdAt;
@OneToMany(mappedBy = "chatRoom", cascade = CascadeType.ALL)
private List<ChatMessage> messages;
}
@Entity
@Table(name = "chat_message")
public class ChatMessage {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long messageId;
@ManyToOne
@JoinColumn(name = "chat_room_id")
private ChatRoom chatRoom;
@ManyToOne
@JoinColumn(name = "sender_id")
private User sender;
@Column(nullable = false, length = 1000)
private String content;
@Column(nullable = false)
private LocalDateTime sentAt;
@Column(nullable = false)
private boolean isRead;
}
2. API 엔드포인트
- 채팅방 생성:
POST /chat-rooms
- 채팅방 목록 조회:
GET /chat-rooms
- 채팅방 상세 조회:
GET /chat-rooms/{chatRoomId}
- 메시지 전송:
POST /chat-rooms/{chatRoomId}/messages
- 메시지 목록 조회:
GET /chat-rooms/{chatRoomId}/messages
- 메시지 읽음 처리:
PUT /chat-rooms/{chatRoomId}/messages/{messageId}/read
3. WebSocket 엔드포인트
- WebSocket 연결:
/ws/chat
- 메시지 구독:
/topic/chat/{chatRoomId}
- 메시지 발행:
/app/chat/{chatRoomId}/send
4. 주요 기능
- 실시간 채팅
- 채팅방 생성 및 관리
- 메시지 전송 및 수신
- 읽음 확인
- 채팅 내역 저장
- 채팅방 목록 관리
5. 예시 요청/응답
5.1 채팅방 생성
// POST /chat-rooms
{
"companyId": 1,
"userId": 2
}
// 응답
{
"success": true,
"message": "채팅방이 생성되었습니다.",
"chatRoomId": 1,
"createdAt": "2024-03-11T15:30:00"
}
5.2 메시지 전송
// POST /chat-rooms/{chatRoomId}/messages
{
"content": "안녕하세요, 지원자입니다."
}
// 응답
{
"success": true,
"message": "메시지가 전송되었습니다.",
"messageId": 1,
"sentAt": "2024-03-11T15:31:00"
}
5.3 WebSocket 메시지 형식
// 발행 메시지
{
"type": "CHAT",
"chatRoomId": 1,
"senderId": 2,
"content": "안녕하세요, 지원자입니다.",
"sentAt": "2024-03-11T15:31:00"
}
6. 제약사항
- 메시지 내용은 최대 1000자
- 채팅방은 회사와 지원자 1:1로 생성
- 메시지는 채팅방 참여자만 조회 가능
- 채팅방 생성은 지원서 제출 후 가능
7. 보안
- WebSocket 연결 시 인증 토큰 검증
- 채팅방 접근 권한 검증
- 메시지 암호화 전송
- 개인정보 보호를 위한 데이터 마스킹
8. 성능 고려사항
- WebSocket 연결 관리
- 메시지 큐잉 시스템
- 대량 메시지 처리
- 실시간 알림 처리
9. 향후 개선사항
- 이미지/파일 전송 기능
- 읽음 확인 기능 강화
- 채팅방 검색 기능
- 채팅 내역 백업 기능
- 채팅방 나가기 기능
- 채팅방 초대 기능
- 그룹 채팅 기능
- 채팅 알림 설정
- 채팅 내용 검색 기능
채팅 기능 정리
1. 데이터 구조
2. API 엔드포인트
POST /chat-roomsGET /chat-roomsGET /chat-rooms/{chatRoomId}POST /chat-rooms/{chatRoomId}/messagesGET /chat-rooms/{chatRoomId}/messagesPUT /chat-rooms/{chatRoomId}/messages/{messageId}/read3. WebSocket 엔드포인트
/ws/chat/topic/chat/{chatRoomId}/app/chat/{chatRoomId}/send4. 주요 기능
5. 예시 요청/응답
5.1 채팅방 생성
5.2 메시지 전송
5.3 WebSocket 메시지 형식
6. 제약사항
7. 보안
8. 성능 고려사항
9. 향후 개선사항