@Bean public  RedisTemplate < String ,  String > redisTemplate ( )  { RedisTemplate < String ,  String > =  new  StringRedisTemplate ( ) ;  return  redisTemplate; } @Bean public  ValueOperations < String ,  String > stringValueOperations ( RedisTemplate < String ,  String > )  { return  redisTemplate. opsForValue ( ) ; } 
    @OnOpen public  void  onOpen ( Session  session, @PathParam ( "id" )  String  id)  { sessionMap. put ( session. getId ( ) ,  session) ; userMap. put ( session. getId ( ) , id) ; 
long  timestamp =  System . currentTimeMillis ( ) ; stringRedisTemplate. opsForValue ( ) . set ( id, "存在" + timestamp) ; log. info ( "[onOpen] 新建连接,session={}, 当前在线人数为:{}" ,  session. getId ( ) ,  userMap. size ( ) ) ; this . sendAllMessage ( JSONUtil . toJsonStr ( Dict . create ( ) . set ( "users" ,  userMap. values ( ) ) ) ) ; } @OnClose public  void  onClose ( Session  session)  { stringRedisTemplate. delete ( userMap. get ( session. getId ( ) ) ) ; userMap. remove ( session. getId ( ) ) ; sessionMap. remove ( session. getId ( ) ) ; log. info ( "[onClose] 有一连接关闭,session={}, 当前在线人数为:{}" ,  session. getId ( ) ,  userMap. size ( ) ) ; }     client. onmessage =  ( msg)  = >  {  if  ( msg. data)  {  let json =  JSON. parse ( msg. data) if  ( json. users &&  json. users. length) { this . loadOnline ( json) ; return } if  ( json. content &&  ( json. fromuser == =  this . fromUser &&  json. touser == =  this . toUser) ||  json. touser == =  this . fromUser &&  json. fromuser == =  this . toUser)  {   this . messages. push ( json)  this . scrollToBottom ( )   } if  ( this . toUser == =  json. fromuser)  { this . setUnReadNums ( )   }  else  {   this . loadUnReadNums ( ) } } } 
    loadOnline ( json) { request. get ( '/user/selectAllOnline' ) . then ( res = >  { res. data =  res. data. filter ( v = >  ( v. id +  '_'  +  v. name)  != =  this . fromUser) this . $set ( this . users,  'USER' ,  res. data) } ) } , 
    public  List < User > selectAllOnline ( User  userNo)  { List < User > =  userMapper. selectAll ( userNo) ; for ( User  user: userList) { String  key =  Integer . toString ( user. getId ( ) ) ; String  value =  stringRedisTemplate. opsForValue ( ) . get ( key) ; if ( value !=  null ) { String  username =  user. getUsername ( ) + "在线" ; user. setUsername ( username) ; } } return  userList; }