2017-04-06 160 views
0

我无法使用Spring web sockets将消息发送给特定用户,这里是我的代码。在这里,当我用来发送消息,然后我越来越org.springframework.messaging.simp.annotation.support.MissingSessionUserException: No "user" header in message如何使用Spring Web Sockets向特定用户发送消息?

请告诉我如何避免这种情况。提前致谢。

Controller.java

@MessageMapping("/sendMessage") 

public void getMessage(String message,Principal principal){ 


    this.template.convertAndSendToUser(principal.getName(),"/topic/messages",message); 


} 

的index.jsp

function connect() { 

      var socket = new SockJS('/SpringWebSocket/chat'); 
      stompClient = Stomp.over(socket); 
      stompClient.connect({}, function(frame) { 
       setConnected(true); 
       console.log('Connected: ' + frame); 
       stompClient.subscribe('/user/queue/messages', function(messageOutput) { 

       alert("respose"); 
       }); 

      }); 
     } 
function sendMessage() { 
         var from = document.getElementById('from').value; 
            var text = document.getElementById('text').value; 
            stompClient.send("/app/sendMessage", 
              {}, JSON.stringify({ 
               'from' : from, 
               'text' : text, 

              })); 

           } 

为spring-servlet.xml:

<context:component-scan base-package="com.test"/> 
<mvc:annotation-driven></mvc:annotation-driven> 
<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/"> 
    </property> 
    <property name="suffix" value=".jsp"> 
    </property> 
</bean> 


<websocket:message-broker application-destination-prefix="/app" > 
    <websocket:stomp-endpoint path="/chat"> 
     <websocket:sockjs/> 
    </websocket:stomp-endpoint> 
    <websocket:simple-broker prefix="/topic, /queue"/> 
</websocket:message-broker> 

回答

0

代替this.template.convertAndSendToUser(principal.getName(),"/topic/messages",message); 使用以下this.template.convertAndSendToUser(principal.getName(),"/queue/messages",message);

相关问题