본문 바로가기

java

java.lang.IllegalStateException: The remote endpoint was in state [TEXT_PARTIAL_WRITING] which is an invalid state for called method

   @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        String userId = getUserId(session); // 사용자 아이디 추출
        Set<WebSocketSession> sessions = userSessions.get(userId);
        if (sessions != null) {
            for (WebSocketSession webSocketSession : sessions) {
                if (!webSocketSession.getId().equals(session.getId())) {
                    webSocketSession.sendMessage(message);
                }
            }
        }
    }

 

동시에 소켓을 통해 정보를 송수신 하다보니 세션이 계속 종료 되는 현상이 생겨서

                    synchronized (webSocketSession) {
                    webSocketSession.sendMessage(message);
                    }

 

추가

   @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        String userId = getUserId(session); // 사용자 아이디 추출
        Set<WebSocketSession> sessions = userSessions.get(userId);
        if (sessions != null) {
            for (WebSocketSession webSocketSession : sessions) {
                if (!webSocketSession.getId().equals(session.getId())) {
                    synchronized (webSocketSession) {
                    webSocketSession.sendMessage(message);
                    }
                }
            }
        }
    }