配置弹簧MVc websocket消息传递弹簧安全性

时间:2014-01-15 18:35:33

标签: spring-mvc websocket spring-messaging

我将教程http://assets.spring.io/wp/WebSocketBlogPost.html自定义到我的应用程序中。使用SimpMessageSendingOperations.convertAndSendToUser(“fabrice”,“/ stayawakews2 / shakebaby”,“mano”)从应用程序向服务器发送消息时,日志显示:

/ stayawakews2 / shakebaby * -userltmei5cm *。我不知道它为什么添加值-userltmei5cm。

谢谢

2 个答案:

答案 0 :(得分:2)

这在参考文档中有解释,请参阅section on user destinationsthese slides

答案 1 :(得分:0)

ltmei5cm - 这是一个websocket会话ID。该值在客户端生成。

一个登录用户可以拥有一些websocket会话。 对于每个webscocket连接(会话),spring创建单独的队列。

如果您向特定用户发送消息,则会将消息添加到某些队列。 因此,用户名替换为webcoket会话ID。

从JavaDoc注释到DefaultUserDestinationResolver.java:

  

当用户尝试订阅“/ user / queue / position-updates”时,   删除“/ user”前缀并添加一个唯一的后缀,从而产生   像“/ queue / position-updates-useri9oqdfzo”这样的后缀   基于用户的会话并确保它不会发生冲突   任何其他试图订阅的用户   “/用户/队列/位置更新”。

将消息发送给用户时   使用目的地,例如“/ user / {username} / queue / position-updates”,   删除“/ user / {username}”前缀并添加后缀,   导致类似“/ queue / position-updates-useri9oqdfzo”。