2016-03-04 109 views
1

我正在使用SpringSocket與Websockets的STOMP協議,並且我正在使用內存borker。我想發送消息給特定的用戶。 在客戶端我訂閱的私人話題:春天websocket與跺腳:私人消息到同一用戶的多個實例

stompClient.subscribe('/user/topic/private', function(greeting){ 
}); 

我送的消息是這樣的:

stompClient.send("/user/"+ user +"/topic/private", {}, message); 

這一切工作正常,我沒有在服務器上做任何事情。但是當我用相同的用戶登錄兩次(例如不同的瀏覽器,一個桌面和一個移動設備)時,它不會像我所期望的那樣工作。我期望私人信息在瀏覽器中都會結束。但它似乎只能在當前的瀏覽器中結束。 有沒有更好的方法來做這種私人訊息?或者我誤解了私人頻道的工作原理?

+0

是你的'user'認證? – Karthik

+0

是的我的用戶通過身份驗證 –

回答

0

你可以試試這個:

@SendToUser(value = "your destination",broadcast = true) 
public String handleException(Message message) { 
    //your logic goes here 
    return message; // this will be sent to user 
} 
+0

是的,但我想我會使用應用程序的目的地,而不是應用程序的目的地? –

+0

這是什麼意思? – Karthik

+0

我如何理解它,用戶目標自動工作。所以如果我發送/用戶/ /topic/private,它會自動結束在用戶(如果用戶訂閱了該課程)。所以對於我的例子,我不需要編寫任何Java代碼。請參閱第25.4.11節http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html#websocket-stomp-handle-annotations。我認爲這句話'如果用戶有多個會話,默認情況下所有預訂給定目標的會話都是針對的。'是我應該更多地考慮和實驗一點 –