准备使用 spring+websocket+stomp来做在线聊天的例子
但spring官方提供的例子,都是用mq的topic来广播消息的。只要连接上服务的客户端,都能收到消息。
但我想在服务端得到哪些用户连接过来了,不通过stomp的方式,用底层websocket方式,用websockethandler是可以获取WebsocketSession的,但是用stomp后,就不知道从哪能获取到session或者类似的信息了。
有使用过spring websocket的吗,知道这个怎么实现?
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里面
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。