2017-08-17 10 views
1

私はWebSocketチャットに取り組んでいます。私はすべての人にすべてのメッセージを送る簡単なものを作った。しかし、私はプライベートメッセージングのようなものを作ろうとしており、どうやってそれを行うのか本当に分かりません。私はさまざまなオプションを試しましたが、それを動作させる方法を理解していません。メッセージを接続し、送信するSpring STOMP over Websocket - "プライベート"メッセージ

WebSocketConfig.java

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { 

    @Override 
    public void configureMessageBroker(MessageBrokerRegistry config) { 
     config.enableSimpleBroker("/topic/", "/queue/", "/user/"); 
     config.setApplicationDestinationPrefixes("/app"); 
    } 

    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/gs-guide-websocket").withSockJS(); 
    } 
} 

GreetingController.java

@Controller 
public class GreetingController { 

    @MessageMapping("/hello") 
    @SendTo("/topic/greetings") 
    public Greeting greeting(Message message) throws Exception { 
     return new Greeting(message.getFrom_user_id(), message.getMessage(), message.getTo_user_id()); 

    } 
} 

そして、私のJS機能:

ここに私のコードだ

function connect() { 
var socket = new SockJS('/gs-guide-websocket'); 
stompClient = Stomp.over(socket); 
var theUserId = 1; 
stompClient.connect({user:theUserId}, function (frame) { 
    setConnected(true); 
    console.log('Connected: ' + frame); 
    //stompClient.subscribe('/topic/greetings', function (greeting) { 
    stompClient.subscribe('/topic/greetings', function (greeting) { 
     showGreeting(JSON.parse(greeting.body).content); 
    }); 
}); 
} 


function sendName() { 
stompClient.send("/app/hello", {}, JSON.stringify(
     { 
      'from_user_id': parseInt($("#from_user_id").val()), 
      'message': $("#message").val(), 
      'to_user_id': parseInt($("#to_user_id").val()) 
     })); 
} 

プライベートメッセージの操作方法どのようにすればいいのか、誰かに教えてもらえますか?

乾杯!

答えて

1

我々は適切な宛先キュー

ドキュメントにメッセージを送信するためにSimpMessagingTemplateを利用することができます:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/simp/SimpMessagingTemplate.html

@Autowired 
    private SimpMessagingTemplate template; 

    @MessageMapping("/hello") 
    public void greeting(Message message) throws Exception { 

    this.template.convertAndSend("/topic/"+message.getFrom_user_id(),message); 

    } 

は、したがって、クライアント側

+1

感謝のトピックへのサブスクリプションを定義します君は!魅力的な作品:) – Andrew

関連する問題