Spring 4 WebSocket 을 지정 한 사용자 에 게 보 내기:convertAndSendToUser 함수

2353 단어 Spring
어떤 때 는 지정 한 사용자 에 게 전송 해 야 할 때@SengToUser주석 이나convertAndSendToUser함 수 를 사용 해 야 합 니 다.주의해 야 할 것 은 특정 사용자 에 게 전송 할 때 반드시 Spring Security 라 는 프레임 워 크 를 사용 하여 로그 인 과 방문 통 제 를 실현 하지 않 아 도 됩 니 다.제 가 프로젝트 에서 사용 하 는 것 은 Apache Shiro 입 니 다.사용자 로그 인 후 Session 에 해당 하 는 Principal 을 설정 합 니 다.
        UsernamePasswordToken token = new UsernamePasswordToken(phonenum, password);
        token.setRememberMe(true);
        currentUser.login(token);
        Session session = currentUser.getSession();
        session.setAttribute("user_id", user_id);
        session.setAttribute("phonenum", phonenum);

그리고 지정 한 사용자 에 게 보 낼 수 있 습 니 다.
    public void handleMessage(Baobiaoorder order) {
        log.info("    RabbitMQ   :" + order.getOuttradeno());
//        operations.convertAndSend("/topic/pay-result", order);
        operations.convertAndSendToUser(order.getPhonenum(), "/queue/pay-result", order);
    }

그 중에서order.getPhonenum()바로 Session 안의 핸드폰 번호 입 니 다.저 는 핸드폰 번 호 를 Shiro 의 Principal 로 하기 때 문 입 니 다.이 때 메 시 지 는/queue/pay-result목적지 에 보 내지 만 클 라 이언 트 가 구독 해 야 할 것 은/user/queue/pay-result입 니 다.주의해 야 할 것 은 관례 에 따라 특정 사용자 에 게 보 내 는 비 방송 식 목적 지 를 topic 이 아 닌 queue 로 설정 하 는 것 이 좋다 는 점 이다.이렇게 하면 지정 한 사용자 에 게 메 시 지 를 보 낼 수 있다.

좋은 웹페이지 즐겨찾기