开发者社区> 问答> 正文

spring websocket stomp 获取用户信息

准备使用 spring+websocket+stomp来做在线聊天的例子

但spring官方提供的例子,都是用mq的topic来广播消息的。只要连接上服务的客户端,都能收到消息。

但我想在服务端得到哪些用户连接过来了,不通过stomp的方式,用底层websocket方式,用websockethandler是可以获取WebsocketSession的,但是用stomp后,就不知道从哪能获取到session或者类似的信息了。

有使用过spring websocket的吗,知道这个怎么实现?

展开
收起
a123456678 2016-03-19 10:52:36 8745 0
2 条回答
写回答
取消 提交回答
  • websockethandler怎么获取的

    2020-03-19 17:42:24
    赞同 展开评论 打赏
  • public void sendMessage(SimpMessageHeaderAccessor accessor , UserChat userChat){

        Map<String,Object> map =                                        accessor.getSessionAttributes();
        User user = (User) map.get(Constants.SESSION_USER);
         上述代码是在Controller中实现的,accessor可以获取请求头消息 例如sessionId等等,
    

    不过上述代码 之前要添加websocket拦截器 registry.addEndpoint("/coordination").withSockJS().setInterceptors(new ChatHandlerShareInterceptor());

    而ChatHandlerShareInterceptor extends HttpSessionHandshakeInterceptor 或者实现ChatHandlerShareInterceptor extends HttpSessionHandshakeInterceptor

    重写beforeHandshake方法,将session中数据赋值到attributes里面

    }

    2019-07-17 19:07:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载