2017-12-15 1 views
1

STOMP websocket 연결 중 일부는 동 기적으로 처리해야한다는 요구 사항이 있습니다.STOMP Websocket Spring을 사용한 동기 통신

의미 나는 주제 ("/ 주제")에 등록 된 클라이언트 (봄)가 있습니다.

브로커 ("/ topic") 및 정의 된 핸들러 ("/ app/hello")를 정의한 서버 (스프링)가 있습니다.

이제 클라이언트가/app/hello에 요청을 보내고 다음 요청을/app/hello로 보내기 전에 응답을 기다리는 것이 가능합니다.

  1. 내 서버에서 값을 반환하려면 어떻게해야합니까 (STOMP 사양에는 RECEIPT 프레임에 대한 설명이 있지만 수동으로 제어 할 수있는 것이라고는 생각하지 않습니다).
  2. 보내기 후에 클라이언트에서 값을 기다리는 방법은 무엇입니까?
+1

[example on spring.io] (https://spring.io/guides/gs/messaging-stomp-websocket/)을 이미 따랐을 가능성이 있습니까? 나는 당신이 요구하는 모든 것이 그 모범에 있다고 생각합니다. – dpr

+0

클라이언트가 웹 브라우저 (자바 스크립트)이고 또한 비동기입니다. – John

+1

웹 소켓은 설계 상 비동기입니다. Java 클라이언트를 WebSockets 엔드 포인트에 연결 하시겠습니까? – dpr

답변

0

Java 클라이언트를 websocket 끝점에 연결하려면 tyrus reference implementationJSR356 - Websockets For Java으로 사용할 수 있습니다.

기본적으로 클라이언트 끝점 (javax.websocket.Endpoint)과 메시지 처리기 (javax.websocket.MessageHandler)를 구현해야합니다. 엔드 포인트에서 당신은 개방의 현재 세션에 메시지 핸들러를 등록 : 당신이 ClientManager 사용할 수 있습니다

public class ClientEndpoint extends Endpoint { 
    ... 

    @Override 
    public void onOpen(final Session aSession, final EndpointConfig aConfig) { 
    aSession.addMessageHandler(yourMessageHandler); 
    } 
} 

서버 엔드 포인트에 연결하려면 :

final ClientManager clientManager = ClientManager.createClient(); 
clientManager.connectToServer(clientEndpoint, config, uriToServerEndpoint); 

메시지 핸들러의 onMessage 메소드가 호출됩니다, 서버 엔드 포인트가 항목에 무엇인가를 보내면.

필요에 따라 위에서 언급 한 인터페이스를 구현하거나 해당 주석을 사용할 수 있습니다.

업데이트 : STOMP 프로토콜의 STOMP website 목록 여러 구현. Java의 경우 GozirraStampy이 있습니다. 나는이 프레임 워크에 대한 경험이 없지만 예제는 매우 간단하다.

+0

을 사용할 수 있습니다.하지만 이미 Spring을 사용하고 있습니다. 신병!! – John

관련 문제