开发者社区> 问答> 正文

spring websocket stomp 获取用户信息

a123456678 2016-03-19 10:52:36 3589

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

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

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

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

Java Spring
分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:07:38

    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里面

    }

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题