Skip to content

[Chat] WebSocket 연결하기 #178

@minisundev

Description

@minisundev

어떤 기능인가요?

채팅 모듈에서 RestAPI 대신 WebSocket을 통해 실시간으로 메시지를 주고받는 방식으로 변경했습니다.

기대 효과

  • WebSocket은 지속적으로 연결된 상태에서 양방향 통신을 가능하게 하여 메시지 전달 속도를 향상시키고, 서버 리소스를 보다 효율적으로 사용할 수 있습니다.

작업 상세 내용

ChatType

MessageType을 만들어서 Response에 속성으로 넣어 채팅의 Type에 따라 프론트에서 처리할 수 있게 해서 트래픽 부하를 줄일 수 있을 것으로 기대합니다.
Update, Delete 등 상태 변경이 일어났을 때에 해당 채팅의 id로 프론트에서 찾아서 그 채팅만 변경하는것이 list를 아예 새로 읽어오는 것보다 트래픽 부하가 적고 속도가 빠를 것으로 예상했습니다.

package kpring.core.chat.model

enum class MessageType(val type: String) {
  ENTER("ENTER"),
  INVITATION("INVITATION"),
  CHAT("CHAT"),
  UPDATE("UPDATE"),
  DELETE("DELETE"),
  OUT("OUT"),
}

ENTER("ENTER") : 누군가가 채팅방에 입장했을 때 수신되는 ChatResponse
INVITATION("INVITATION") : 누군가가 채팅방에 초대링크를 공유했을 때 수신되는 ChatResponse
CHAT("CHAT") : 일반 채팅
UPDATE("UPDATE") : 이 Type의 ChatResponse가 수신되면 해당 채팅의 id로 프론트 페이지에서 찾아서 그 채팅만 변경할 수 있습니다.
DELETE("DELETE") : 이 Type의 ChatResponse가 수신되면 해당 채팅의 id로 프론트 페이지에서 찾아서 그 채팅만 삭제할 수 있습니다.
OUT("OUT") : 누군가가 채팅방을 나갔을 때 가는 ChatResponse

ChatResponse 에 sender와 messageType 추가

data class ChatResponse(
  val id: String,
  val sender: String,
  val messageType: MessageType,
  val isEdited: Boolean,
  val sentAt: String,
  val content: String,

Metadata

Metadata

Assignees

Labels

Chat채팅 관련 기능enhancement추가 기능

Type

No type

Projects

Status

In progress

Relationships

None yet

Development

No branches or pull requests

Issue actions