Java를 사용하여 CMS 시스템의 사용자 실시간 온라인 기능을 작성하는 방법
Java를 사용하여 CMS 시스템의 사용자 실시간 온라인 기능을 작성하는 방법
인터넷의 급속한 발전과 함께 컨텐츠 관리 시스템(CMS)은 많은 웹사이트와 애플리케이션의 핵심이 되었습니다. 더 나은 사용자 경험을 제공하기 위해서는 실시간 온라인 기능이 중요한 구성 요소입니다. 이 기사에서는 Java를 사용하여 CMS 시스템의 사용자 실시간 온라인 기능을 작성하는 방법을 소개하고 코드 예제를 제공합니다.
1. 종속성 소개
먼저 Java 프로젝트의 pom.xml 파일에 다음 종속성을 추가합니다.
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> </dependencies>
이렇게 하면 Spring Boot의 WebSocket 지원이 도입됩니다.
2. WebSocket 구성
Spring Boot 구성 파일(예: application.properties)에 다음 구성을 추가합니다.
# WebSocket配置 spring.mvc.websocket.enabled=true spring.messages.suffix=message
이렇게 하면 WebSocket 기능이 활성화되고 메시지 접미사가 "message"로 구성됩니다.
3. WebSocket 프로세서 생성
WebSocket 연결 및 클라이언트의 메시지를 처리하는 WebSocket 프로세서를 생성합니다. 이는 WebSocketHandler 인터페이스를 구현하는 클래스를 작성하여 달성할 수 있습니다.
import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.WebSocketMessage; import org.springframework.web.socket.WebSocketSession; @Component public class CMSWebSocketHandler implements WebSocketHandler { private static final Map<String, WebSocketSession> SESSIONS = new HashMap<>(); // 连接建立时触发 @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { SESSIONS.put(session.getId(), session); } // 收到消息时触发(此处假设消息为用户ID) @Override public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception { String userId = message.getPayload().toString(); // 处理用户上线逻辑 // ... } // 连接关闭时触发 @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { SESSIONS.remove(session.getId()); } // 发生错误时触发 @Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { // 处理错误逻辑 // ... } }
위 코드에서는 정적 맵을 사용하여 연결된 모든 WebSocket 세션을 저장합니다. 연결이 설정되면 세션이 맵에 추가되고 연결이 닫히면 맵에서 제거됩니다. handlerMessage 메서드를 재정의하면 클라이언트로부터 받은 메시지를 처리할 수 있습니다.
4. WebSocket 프로세서 구성
Spring Boot 구성 클래스에서 WebSocket 프로세서를 구성합니다.
import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { private final CMSWebSocketHandler cmsWebSocketHandler; public WebSocketConfig(CMSWebSocketHandler cmsWebSocketHandler) { this.cmsWebSocketHandler = cmsWebSocketHandler; } @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(cmsWebSocketHandler, "/ws").setAllowedOrigins("*"); } }
위 코드에서는 WebSocket 프로세서를 WebSocket 핸들러로 등록하고 "/ws" 경로에 매핑합니다. setAllowedOrigins("*")를 설정하여 모든 원본에서 WebSocket 연결을 허용합니다.
5. 프런트엔드 통합
프런트엔드 페이지에서 JavaScript 또는 기타 관련 기술을 사용하여 WebSocket을 통해 백엔드와 연결을 설정하고 사용자 ID를 전달합니다.
const socket = new WebSocket("ws://localhost:8080/ws"); const userId = "12345"; socket.onopen = () => { socket.send(userId); }; socket.onclose = () => { // 连接关闭逻辑 };
위 코드에서와 같이 WebSocket 연결이 이루어지면 소켓.send(userId)를 통해 사용자 ID가 전송됩니다.
6. 실시간 온라인 기능 구현
CMS 시스템에서는 WebSocket 프로세서의 afterConnection Used 및 afterConnectionClosed 메소드를 통해 실시간 온라인 기능을 구현할 수 있습니다.
// 连接建立时触发 @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { SESSIONS.put(session.getId(), session); // 用户上线逻辑 String userId = getUserIdFromSession(session); // 处理用户上线逻辑 } // 连接关闭时触发 @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { SESSIONS.remove(session.getId()); // 用户下线逻辑 String userId = getUserIdFromSession(session); // 处理用户下线逻辑 } // 辅助方法:从会话中获取用户ID private String getUserIdFromSession(WebSocketSession session) { Map<String, Object> attributes = session.getAttributes(); // 从attributes中获取用户ID // ... }
사용자 연결이 이루어지면 해당 세션을 SESSIONS Map에 넣고 해당 세션에서 사용자 ID를 얻어 해당 사용자의 온라인 로직 처리를 수행합니다. 사용자 연결이 닫히면 SESSIONS 맵에서 세션이 제거되고 해당 사용자 오프라인 로직이 처리됩니다.
7. 요약
이 기사에서는 CMS 시스템의 사용자 실시간 온라인 기능을 Java를 사용하여 작성하는 방법을 소개합니다. 종속성 도입, WebSocket 구성, WebSocket 프로세서 생성 및 프런트 엔드 통합을 통해 사용자의 실시간 온라인 기능을 실현하고 해당 처리를 수행할 수 있습니다. 실제 애플리케이션에서는 실제 필요에 따라 추가 기능 확장 및 최적화를 수행할 수 있습니다.
이상은 CMS 시스템의 사용자 실시간 온라인 기능을 작성하기 위해 Java를 사용하는 방법에 대한 소개입니다.
위 내용은 Java를 사용하여 CMS 시스템의 사용자 실시간 온라인 기능을 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

이 기사에서는 분산 응용 프로그램을 구축하기위한 Java의 원격 메소드 호출 (RMI)에 대해 설명합니다. 인터페이스 정의, 구현, 레지스트리 설정 및 클라이언트 측 호출을 자세히 설명하여 네트워크 문제 및 보안과 같은 문제를 해결합니다.

이 기사는 네트워크 통신을위한 Java의 소켓 API, 클라이언트 서버 설정, 데이터 처리 및 리소스 관리, 오류 처리 및 보안과 같은 중요한 고려 사항에 대해 자세히 설명합니다. 또한 성능 최적화 기술, i

이 기사에서는 맞춤형 Java 네트워킹 프로토콜을 작성합니다. 프로토콜 정의 (데이터 구조, 프레임, 오류 처리, 버전화), 구현 (소켓 사용), 데이터 직렬화 및 모범 사례 (효율성, 보안, Mainta를 포함합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

뜨거운 주제



