package com.zdcf.action; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import com.google.gson.GsonBuilder; import com.zdcf.model.User; import com.zdcf.po.Message; import com.zdcf.service.UserService; import com.zdcf.tool.UserSessionUtil; import com.zdcf.websocket.MyWebSocketHandler; @Controller @RequestMapping("/chatroom") public class ChatroomAction { private static Logger logger = Logger.getLogger(ChatroomAction.class); @Autowired MyWebSocketHandler handler; @Autowired UserService userService; @RequestMapping("/toChatroom") public String chatroom(){ User user =UserSessionUtil.currentUser(); if(null==user){ return "index/login"; } return "/chatroom/chatroom"; } @RequestMapping("/onlineusers") @ResponseBody public List<User> onlineusers(HttpSession session){ Map<Integer, WebSocketSession> map=MyWebSocketHandler.userSocketSessionMap; Set<Integer> set=map.keySet(); Iterator<Integer> it = set.iterator(); List<User> list=new ArrayList<>(); while(it.hasNext()){ Integer entry = it.next(); User u=userService.getUserById(entry); String user=UserSessionUtil.currentUser().getUsername(); if(!user.equals(u.getUsername())){ list.add(u); } } return list; } // 发布系统广播(群发) @ResponseBody @RequestMapping(value = "broadcast", method = RequestMethod.POST) public void broadcast(@RequestParam("text") String text) throws IOException { User user =UserSessionUtil.currentUser(); Message msg = new Message(); msg.setDate(new Date()); msg.setFrom(-1);//-1表示系统广播 msg.setFromName(user.getUsername()); msg.setTo(0); msg.setText(text); handler.broadcast(new TextMessage(new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create().toJson(msg))); } @RequestMapping("getuid") @ResponseBody public User getuid(@RequestParam("username")String username){ User user=userService.getUserByName(username); return user; } }