[SPRING] STOMP없이 원시 스프링 4 웹 소켓을 사용하여 메시지를 브로드 캐스트하는 방법은 무엇입니까?
SPRINGSTOMP없이 원시 스프링 4 웹 소켓을 사용하여 메시지를 브로드 캐스트하는 방법은 무엇입니까?
이 위대한 답변 https://stackoverflow.com/a/27161986/4358405에는 STOMP 서브 프로토콜없이 (그리고 SockJS없이) 원시 스프링 4 웹 소켓을 사용하는 방법의 예가 있습니다.
이제 내 질문은 : 모든 클라이언트에게 어떻게 브로드 캐스트합니까? 순수한 JSR 356 웹 소켓 API와 비슷한 방식으로 사용할 수있는 API를 기대합니다. session.getBasicRemote (). sendText (messJson);
모든 WebSocketSession 객체를 독립적으로 유지 한 다음 각 객체에서 sendMessage ()를 호출해야합니까?
해결법
-
==============================
1.해결책을 찾았습니다. WebSocket 핸들러에서 WebSocketSession 목록을 관리하고 afterConnectionEstablished 함수에 새 세션을 추가합니다.
해결책을 찾았습니다. WebSocket 핸들러에서 WebSocketSession 목록을 관리하고 afterConnectionEstablished 함수에 새 세션을 추가합니다.
private List<WebSocketSession> sessions = new ArrayList<>(); synchronized void addSession(WebSocketSession sess) { this.sessions.add(sess); } @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { addSession(session); System.out.println("New Session: " + session.getId()); }
우리가 방송 할 필요가있을 때, 목록 세션의 모든 세션을 열거하고 메시지를 보냅니다.
for (WebSocketSession sess : sessions) { TextMessage msg = new TextMessage("Hello from " + session.getId() + "!"); sess.sendMessage(msg); }
희망이 도움이!
-
==============================
2.내가 아는 한 여기 문서에서 수집 할 수 있습니다 당신은 WebSocketHandler를 사용하여 방송 할 수 없습니다.
내가 아는 한 여기 문서에서 수집 할 수 있습니다 당신은 WebSocketHandler를 사용하여 방송 할 수 없습니다.
대신 여기에 설명 된대로 WebSocketMessageBrokerConfigurer가 구성한 WebSocket을 통해 Stomp를 사용해야합니다.
코드의 어느 곳에서나 SimpMessagingTemplate을 사용하여 여기에 설명 된대로 가입 된 클라이언트에 메시지 보내기
from https://stackoverflow.com/questions/33910639/how-to-broadcast-a-message-using-raw-spring-4-websockets-without-stomp by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Hibernate EntityManager, 그것은 싱글 톤으로 사용되어야 하는가? (0) | 2019.03.29 |
---|---|
[SPRING] Spring 3 디버그 로깅을 끄는 방법? (0) | 2019.03.29 |
[SPRING] 왜 우리는 아파치 일반적인 로깅 항아리 봄 프레임 워크를 설치하는 일식 필요 (0) | 2019.03.29 |
[SPRING] Spring에서 Excel 다운로드 가능 파일 반환 (0) | 2019.03.29 |
[SPRING] 방법 - Spring IoC 및 HttpClient 4.3.1 CloseableHttpClient? (0) | 2019.03.29 |