如何從服務器向特定用戶發送websocket消息?在Spring上發送消息給特定用戶Websocket
我的web應用程序有彈簧安全設置並使用websocket。我遇到了棘手的問題,試圖從服務器發送消息到特定用戶只有。
我從閱讀理解the manual從服務器我們可以做
simpMessagingTemplate.convertAndSend("/user/{username}/reply", reply);
而且在客戶端:
stompClient.subscribe('/user/reply', handler);
但我永遠無法獲得訂閱調用的回調。我嘗試了很多不同的道路,但沒有運氣。
如果我把它發送到/topic/reply它可以工作,但所有其他連接的用戶也會收到它。
爲了說明問題,我創建了在github上這個小項目:https://github.com/gerrytan/wsproblem
重現步驟:
1)克隆和構建項目(請確保您使用JDK 1.7和Maven的3.1)
$ git clone https://github.com/gerrytan/wsproblem.git
$ cd wsproblem
$ mvn jetty:run
2)導航至http://localhost:8080
,登錄使用任一擺錘/試驗或吉姆/測試
3)點擊「請求用戶特定的信息」。預期:僅顯示此用戶的「收到的郵件給我」旁邊顯示「hello {用戶名}」消息,實際:沒有收到任何郵件
工作你一直在尋找convertAndSendToUser(用戶字符串,字符串目的地,T消息)?http://docs.spring.io/spring/docs/4.0.0.M3/javadoc-api /組織/春天框架/消息/ simp/SimpMessagingTemplate.html#convertAndSendToUser%28java.lang.String,%20java.lang.String,%20T%29 –
是試過,但也沒有運氣 – gerrytan
我一直在私人項目工作,這是我們使用的方法,它正在爲我們工作。我認爲一個潛在的問題可能是您訂閱了「/ user/reply」,並且您正在向「/ user/{username}/reply」發送消息。我認爲你應該刪除{username}部分並使用convertAndSendToUser(String user,String destination,T message)。 –