2016-10-25 12 views
0

Ich verwende Websocket, um eine Nachricht an den Client zu senden, wenn diese Methode verwendet wird, um eine Nachricht an den Client zu senden.WebSocket convertAndSendToUser kann keine Nachricht empfangen

private void pushInfoImpl(String url, String content) { 
    if (simpMessagingTemplate != null) { 
     simpMessagingTemplate.convertAndSend(url, content); 
    } 
} 

Der Client konnte messsage erfolgreich empfangen. Bei Verwendung dieser Methode zum Senden eines angegebenen Benutzers:

//send url:/queue/location 
//user:admin 
private void pushInfoImpl(String user, String url, String content) { 
    if (simpMessagingTemplate != null) { 
     simpMessagingTemplate.convertAndSendToUser(user, url, content); 
    } 
} 

Der Client kann die gesendete Nachricht nicht empfangen. Was ich habe versucht:

  1. Add Warteschlange in config.enableSimpleBroker("/topic","/queue");
  2. abonnieren die URL wie stompClient.subscribe('/admin/queue/location', function (greeting) { console.log(greeting.body); }); .admin der Benutzer.

Was soll ich tun, um dieses Problem zu beheben? Um den Client Server erfolgreich messsage zu erhalten. Dies ist log:

15:03:28.806]-[Timer-5699]-[org.springframework.messaging.simp.broker.SimpleBrokerMessageHandler]-{Processing MESSAGE destination=/queue/location-userdeqnkwuw session=null payload={"data":[{"status":2,"vehicleId":"cae21196-cb66-4256-88a6-7cdfb23e2c78"}],"desc"...(truncated)} 
      15:03:28.806]-[Timer-5701]-[org.springframework.messaging.simp.broker.SimpleBrokerMessageHandler]-{Processing MESSAGE destination=/queue/location-userdeqnkwuw session=null payload={"data":[{"status":2,"vehicleId":"cae21196-cb66-4256-88a6-7cdfb23e2c78"}],"desc"...(truncated)} 
      15:03:28.806]-[Timer-5699]-[org.springframework.messaging.simp.broker.SimpleBrokerMessageHandler]-{Processing MESSAGE destination=/queue/location-userdeqnkwuw session=null payload={"data":[{"status":2,"vehicleId":"cae21196-cb66-4256-88a6-7cdfb23e2c78"}],"desc"...(truncated)} 

Antwort

0

Der Grund ist die URL nicht richtig ist, auf dem Server, Parameter zu senden sollte dies mag:

user: admin 
url: /location(right) vs /queue/location(wrong) 

auf dem Client, sollte die subsribe dies mag:

/user/admin/location or /user/{username}/location 
Verwandte Themen