spring websocket stomp 获取用户信息

高达 发布于 2015/12/16 17:55
阅读 3K+
收藏 0

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

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

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

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

加载中
0
k
klx502
我也遇到这个问题,请问怎么解决啊?
k
klx502
回复 @高达 : 谢谢
k
klx502
谢谢
高达
找到了一个,按他这个能保存websocketsession,https://github.com/isaranchuk/spring-websocket-disconnect
0
5
500_Server_Error
请问有解决的方案吗?难道要替换源码吗?
y
yesummer
回复 @高达 : 你这个是正解
高达
按他这个能保存websocketsession,https://github.com/isaranchuk/spring-websocket-disconnect
0
梵音魔琴
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里面 

}
高达
回复 @梵音魔琴 : 多谢回复,主要是需要有哪些用户在某台机器上,需要每台机器有一个集合,你这个方法应该满足不了需求
梵音魔琴
不过这个只有添加session没有移除,在afterHandshake方法中没有实现该功能 所以统计的话 还是有问题的
返回顶部
顶部