> Java > java지도 시간 > Java를 사용하여 CMS 시스템의 사용자 실시간 온라인 기능을 작성하는 방법

Java를 사용하여 CMS 시스템의 사용자 실시간 온라인 기능을 작성하는 방법

PHPz
풀어 주다: 2023-08-25 20:48:23
원래의
1334명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿