일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- postgresql 비밀번호 초기화
- 서울 야경
- postgresql 설치
- cloud foundry
- duabi
- r
- 두바이여행
- mauritius casela
- bind9
- Trou aux Biches
- postgresql 비밀번호 변경
- openstack
- 모리셔스
- 경주
- Sony A850
- 독일여행
- 서울야경
- 트루우비슈
- mauritius
- 프랑크푸르트 여행
- 모리셔스 여행
- 모리셔스 카젤라
- 모리셔스 카셀라
- 모리셔스리조트
- 트루오비쉬
- 경주 여행
- 모리셔스여행
- Melbourne 여행
- 느낌 사진
- 두바이
- Today
- Total
I.K.Picture & IT Info.
[WebSocket] Java Spring에서 WebSocket 데이터 보낼 때 TEXT_PARTIAL_WRITING 오류 본문
[WebSocket] Java Spring에서 WebSocket 데이터 보낼 때 TEXT_PARTIAL_WRITING 오류
helpful-intruder 2020. 11. 26. 23:05간단하면서.. 모르면 이유를 도저히 모르는 내용에 대해 오늘은
올려보려고 합니다.
Spring에서 WebSocket사용하다보면 여러 클래스에서 데이터를 보낼 때가 있는데... (반복적으로)
간혹
The remote endpoint was in state [TEXT_PARTIAL_WRITING] which is an invalid stat e for called method
오류가 나는 경우가 있습니다.
과연 무엇일까요...??
저 같은 경우에는 Quartz (스케줄러) 서비스를 하면서 Websocket으로 데이터를 보내는 경우였습니다.
총 2개(이상)의 스케줄러가 있었고..
각 각 5초, 10초 마다 .. 데이터를 일정하게 보내도록 되어 있는데
이게 간혹 2개가 서로 동시에 보내려다보니 저런 오류가 나는 것을 확인할 수 있었습니다.
그래서!! 이를 해결하는 방법은 바로 아주 간단히..
send 부분을 sychronized로 묶어주는 겁니다.. (너무 간단하죠..?)
아래 소스코드 예를 보면 더 쉬우실 꺼예요
public boolean sendMessageToUser(String clientId, TextMessage message) { |
보내는 함수에 바로 저렇게 synchronized로 모두 묶어주면
동시에 보낼 때 잠시 락을 걸게되고 끝나면 보내는 형태로
충돌을 방지할 수 있습니다 :)
'Development > Web' 카테고리의 다른 글
[tomcat 설정] 로그 파일 기간별 저장 방법 (0) | 2021.10.06 |
---|---|
SSL 테스트를 위한 사설 CA 인증 및 SSL 인증서 발급 (0) | 2020.04.19 |
자바 기반 웹 서비스 수행 시 주소 창 직접 접근 막는 법 (URL 직접 접근 막는법) (2) | 2020.03.19 |
NW.js를 통한 웹 언어로 데스크톱용 어플리케이션 생성 (0) | 2018.12.28 |
[IE 문제] Canvas 내용 파일 저장 (0) | 2018.12.08 |