2016-03-04 113 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。我认为这句话'如果用户有多个会话,默认情况下所有预订给定目标的会话都是针对的。'是我应该更多地考虑和实验一点 –