Skip to content

Commit

Permalink
feat: change error message
Browse files Browse the repository at this point in the history
  • Loading branch information
barabobBOB committed Jul 20, 2024
1 parent df971dc commit d516fe9
Showing 1 changed file with 38 additions and 20 deletions.
58 changes: 38 additions & 20 deletions internal/chat/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,17 @@ func (client *Client) HandleRead(stateManager StateManager, chatService *service
_, jsonMessage, err := client.Conn.ReadMessage()
if err != nil {
if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "예상치 못한 연결 종료 오류가 발생했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"예상치 못한 연결 종료 오류가 발생했습니다. userID="+client.FbUID)
}
break
}
if len(jsonMessage) > maxMessageSize {
errMsg := fmt.Sprintf("메시지 크기가 최대 크기(%d 바이트)를 초과합니다.", maxMessageSize)
err := client.Conn.WriteMessage(websocket.TextMessage, []byte(errMsg))
if err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "메시지 크기 초과 오류 메시지를 전송하는 데 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"메시지 크기 초과 오류 메시지를 전송하는 데 실패했습니다. userID="+client.FbUID)
}
continue
}
Expand Down Expand Up @@ -91,7 +93,8 @@ func (client *Client) HandleWrite() {
func (client *Client) setupConnection() *pnd.AppError {
err := client.Conn.SetReadDeadline(time.Now().Add(pongWait))
if err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "읽기 제한 시간 설정에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"읽기 제한 시간 설정에 실패했습니다. userID="+client.FbUID)
}

client.Conn.SetPongHandler(func(string) error {
Expand All @@ -106,26 +109,31 @@ func (client *Client) setupConnection() *pnd.AppError {

func (client *Client) writeMessage(message []byte) *pnd.AppError {
if err := client.Conn.SetWriteDeadline(time.Now().Add(writeWait)); err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "쓰기 제한 시간 설정에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"쓰기 제한 시간 설정에 실패했습니다. userID="+client.FbUID)
}
w, err := client.Conn.NextWriter(websocket.TextMessage)
if err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "다음 작성자 설정에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"다음 작성자 설정에 실패했습니다. userID="+client.FbUID)
}
defer w.Close()

if _, err := w.Write(message); err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "메시지 쓰기에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"메시지 쓰기에 실패했습니다. userID=%s"+client.FbUID)
}

n := len(client.MessageSender)
for i := 0; i < n; i++ {
if _, err := w.Write(newline); err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "개행 문자 쓰기에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"개행 문자 쓰기에 실패했습니다. userID=%s"+client.FbUID)
}

if _, err := w.Write(<-client.MessageSender); err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "채널에서 메시지 읽기에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"채널에서 메시지 읽기에 실패했습니다. userID=%s"+client.FbUID)
}
}
return nil
Expand All @@ -134,21 +142,25 @@ func (client *Client) writeMessage(message []byte) *pnd.AppError {
func (client *Client) writeCloseMessage() *pnd.AppError {
err := client.Conn.SetWriteDeadline(time.Now().Add(writeWait))
if err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "종료 메시지의 쓰기 제한 시간 설정에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"종료 메시지의 쓰기 제한 시간 설정에 실패했습니다. userID=%s"+client.FbUID)
}
err = client.Conn.WriteMessage(websocket.CloseMessage, []byte{})
if err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "종료 메시지 쓰기에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"종료 메시지 쓰기에 실패했습니다. userID=%s"+client.FbUID)
}
return nil
}

func (client *Client) sendPing() *pnd.AppError {
if err := client.Conn.SetWriteDeadline(time.Now().Add(writeWait)); err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "핑 메시지의 쓰기 제한 시간 설정에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"핑 메시지의 쓰기 제한 시간 설정에 실패했습니다. userID=%s"+client.FbUID)
}
if err := client.Conn.WriteMessage(websocket.PingMessage, nil); err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "핑 메시지 쓰기에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"핑 메시지 쓰기에 실패했습니다. userID=%s"+client.FbUID)
}
return nil
}
Expand All @@ -160,7 +172,8 @@ func (client *Client) disconnect(stateManager StateManager) *pnd.AppError {
}
close(client.MessageSender)
if err := client.Conn.Close(); err != nil {
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown, "연결 종료에 실패했습니다.")
return pnd.NewAppError(err, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"연결 종료에 실패했습니다. userID=%s"+client.FbUID)
}
return nil
}
Expand All @@ -170,7 +183,8 @@ func (client *Client) handleNewMessage(
) *pnd.AppError {
var message Message
if err := json.Unmarshal(jsonMessage, &message); err != nil {
return pnd.NewAppError(err, http.StatusBadRequest, pnd.ErrCodeInvalidBody, "JSON 메시지 해독에 실패했습니다.")
return pnd.NewAppError(err, http.StatusBadRequest, pnd.ErrCodeInvalidBody,
"JSON 메시지 해독에 실패했습니다. userID=%s"+client.FbUID)
}
message.Sender = client
switch message.Action {
Expand All @@ -191,7 +205,8 @@ func (client *Client) handleJoinRoomMessage(
message Message, stateManager StateManager, chatService *service.ChatService,
) *pnd.AppError {
if message.Room == nil {
return pnd.NewAppError(nil, http.StatusBadRequest, pnd.ErrCodeInvalidBody, "채팅방 정보가 nil입니다.")
return pnd.NewAppError(nil, http.StatusBadRequest, pnd.ErrCodeInvalidBody,
"채팅방 정보가 nil입니다. userID=%s"+client.FbUID)
}

room, err := client.CreateRoomIfNotExists(message, stateManager, chatService)
Expand All @@ -200,12 +215,14 @@ func (client *Client) handleJoinRoomMessage(
}

if message.Sender == nil {
return pnd.NewAppError(nil, http.StatusBadRequest, pnd.ErrCodeInvalidBody, "보낸 사람이 nil입니다.")
return pnd.NewAppError(nil, http.StatusBadRequest, pnd.ErrCodeInvalidBody,
"보낸 사람이 nil입니다. userID=%s"+client.FbUID)
}

if !stateManager.IsClientInRoom(client.FbUID, message.Room.GetID()) {
if room.RegisterChan == nil {
return pnd.NewAppError(nil, http.StatusInternalServerError, pnd.ErrCodeUnknown, "방 등록 채널이 nil입니다.")
return pnd.NewAppError(nil, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"방 등록 채널이 nil입니다. userID=%s"+client.FbUID)
}

stateManager.JoinRoom(room.ID, client.FbUID)
Expand All @@ -223,15 +240,16 @@ func (client *Client) CreateRoomIfNotExists(
message Message, stateManager StateManager, chatService *service.ChatService,
) (*Room, *pnd.AppError) {
if stateManager == nil {
return nil, pnd.NewAppError(nil, http.StatusInternalServerError, pnd.ErrCodeUnknown, "StateManager가 nil입니다.")
return nil, pnd.NewAppError(nil, http.StatusInternalServerError, pnd.ErrCodeUnknown,
"StateManager가 nil입니다. userID=%s"+client.FbUID)
}
room := stateManager.FindRoomByID(message.Room.GetID())
if room == nil {
log.Info().Msgf("ID %d의 방을 찾을 수 없어 새 방을 생성합니다.", message.Room.GetID())
log.Info().Msgf("ID %d의 방을 찾을 수 없어 새 방을 생성합니다. userID=%s", message.Room.GetID(), client.FbUID)
var err *pnd.AppError
room, err = stateManager.CreateRoom(message.Room.Name, message.Room.RoomType, chatService)
if err != nil {
log.Error().Err(err.Err).Msg("방 생성에 실패했습니다.")
log.Error().Err(err.Err).Msgf("방 생성에 실패했습니다. userID=%s", client.FbUID)
return nil, err
}
return room, nil
Expand Down

0 comments on commit d516fe9

Please sign in to comment.