栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

简单:convertAndSendToUser我在哪里获得用户名?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单:convertAndSendToUser我在哪里获得用户名?

这个答案是基于以下应用程序编写的:https : //github.com/spring-guides/gs-messaging-stomp-
websocket

为了注册用户,必须首先创建一个代表该用户的对象,例如:

public final class User implements Principal {    private final String name;    public User(String name) {        this.name = name;    }    @Override    public String getName() {        return name;    }}

然后,您将需要一种创建这些

User
对象的方法。一种方法是在
SockJS
向您发送连接消息头时。为此,您需要拦截连接消息。您可以通过创建我们的拦截器来做到这一点,例如:

public class UserInterceptor extends ChannelInterceptorAdapter {    @Override    public Message<?> preSend(Message<?> message, MessageChannel channel) {        StompHeaderAccessor accessor =     MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);        if (StompCommand.CONNECT.equals(accessor.getCommand())) { Object raw = message         .getHeaders()         .get(SimpMessageHeaderAccessor.NATIVE_HEADERS); if (raw instanceof Map) {     Object name = ((Map) raw).get("name");     if (name instanceof linkedList) {         accessor.setUser(new User(((linkedList) name).get(0).toString()));     } }        }        return message;    }}

拥有该地址后,您还必须注册this

UserInterceptor
。我猜您在应用程序中的某个位置定义了配置
AbstractWebSocketMessageBrokerConfigurer
类。在此类中,您可以通过覆盖
configureClientInboundChannel
方法注册用户拦截器。您可以这样做:

@Overridepublic void configureClientInboundChannel(ChannelRegistration registration) {    registration.setInterceptors(new UserInterceptor());}

最后,当您的客户连接时,他们必须提供其用户名:

stompClient.connect({    name: 'test' // Username!}, function () {    console.log('connected');});

完成所有设置后,

simpUserRegistry.getUsers()
将返回用户列表,您将可以使用
convertAndSendToUser
方法:

messaging.convertAndSendToUser("test", ..., ...);

编辑

进一步测试一下,在订阅时,您必须为主题加上前缀

/user
as,
SimpMessagingTemplate
并将其用作默认前缀,例如:

stompClient.subscribe('/user/...', ...);

我也犯了一个错误

UserInterceptor
并纠正了它(名称解析部分)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/615620.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号