springboot 서버 통합 웹소켓 및 클라이언트 소켓IO 이벤트 감청
통합 웹소켓
stomp over 웹socket 프로토콜을 사용하여 http 프로토콜을 기반으로 하기 때문에 차단될 수 있습니다
의존 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
구성 클래스
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
private static final endPoint="/websocket";//socket
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint(endPoint).setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
//
registry.enableSimpleBroker("/topic","/user");
registry.setUserDestinationPrefix("/user");
//
registry.setApplicationDestinationPrefixes("/app");
}
}
메시지 보내기
@Autowired
private SimpMessagingTemplate simpMessagingTemplate;
private Logger logger= LoggerFactory.getLogger(WebSocketDemo.class);
public void sendMessage(){
simpMessagingTemplate.convertAndSend(" "," ");
}
클라이언트 모니터링
클라이언트와 서버가 웹소켓 연결을 구축할 때 서버 측은 클라이언트와 서버가 연결 구축, 연결 완료, 연결 닫기(브라우저 현재 탭 페이지 닫기, 새로 고침 등 포함), 구독, 구독 취소와 관련된 이벤트 클래스를 감지할 수 있습니다. SessionConnectEvent, SessionConnectedEvent, SessionDisconnect Event, SessionSubscribeEvent,SessionUnsubscribeEvent Example:spring 검색 가능한 클래스에 다음 방법을 추가합니다.@EventListener
public void onDisconnectEvent(SessionDisconnectEvent event) {
String sessionId=event.getSessionId();
System.out.println(sessionId);
}
통신 예
sessionId는 클라이언트와 서버가 연결될 때 발생하는 것으로 SessionConnectedEvent에도 있습니다.이 sessionId와 클라이언트가 연결될 때userId를 통해 현재 클라이언트와 통신하는 목적을 달성할 수 있고 모든 클라이언트의 구독 주소를 유일하게 할 수 있으며 서버가 지정한 클라이언트의 구독 주소로 전송할 수 있습니다stomp.connect(userId, "guest", function(frame) {
stomp.subscribe(" ", " ");
});
@EventListener
public void BrokerAvailabilityEvent(SessionConnectedEvent event) {
Long userId=Long.parseLong (((LinkedList) event.getMessage().getHeaders().get("simpConnectMessage", GenericMessage.class).getHeaders().get("nativeHeaders",Map.class).get("login")).get(0).toString());
System.out.println("userId:"+userId+" sessionId:"+event.getMessage().getHeaders().get("simpSessionId"));
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
private static final endPoint="/websocket";//socket
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint(endPoint).setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
//
registry.enableSimpleBroker("/topic","/user");
registry.setUserDestinationPrefix("/user");
//
registry.setApplicationDestinationPrefixes("/app");
}
}
@Autowired
private SimpMessagingTemplate simpMessagingTemplate;
private Logger logger= LoggerFactory.getLogger(WebSocketDemo.class);
public void sendMessage(){
simpMessagingTemplate.convertAndSend(" "," ");
}
@EventListener
public void onDisconnectEvent(SessionDisconnectEvent event) {
String sessionId=event.getSessionId();
System.out.println(sessionId);
}
stomp.connect(userId, "guest", function(frame) {
stomp.subscribe(" ", " ");
});
@EventListener
public void BrokerAvailabilityEvent(SessionConnectedEvent event) {
Long userId=Long.parseLong (((LinkedList) event.getMessage().getHeaders().get("simpConnectMessage", GenericMessage.class).getHeaders().get("nativeHeaders",Map.class).get("login")).get(0).toString());
System.out.println("userId:"+userId+" sessionId:"+event.getMessage().getHeaders().get("simpSessionId"));
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.