我将教程http://assets.spring.io/wp/WebSocketBlogPost.html自定义到我的应用程序中。使用SimpMessageSendingOperations.convertAndSendToUser(“fabrice”,“/ stayawakews2 / shakebaby”,“mano”)从应用程序向服务器发送消息时,日志显示:
/ stayawakews2 / shakebaby * -userltmei5cm *。我不知道它为什么添加值-userltmei5cm。
谢谢
答案 0 :(得分:2)
这在参考文档中有解释,请参阅section on user destinations和these 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”。