@Data
public class Room {
int roomNumber;
String roomName;
}
List<Room> roomList = new ArrayList<Room>();
static int roomNumber = 0;
/**
* 방 생성하기
* @param params
* @return
*/
@RequestMapping("/createRoom")
public @ResponseBody List<Room> createRoom(@RequestParam HashMap<Object, Object> params){
String roomName = (String) params.get("roomName");
if(roomName != null && !roomName.trim().equals("")) {
Room room = new Room();
room.setRoomNumber(++roomNumber);
room.setRoomName(roomName);
roomList.add(room);
}
return roomList;
}
/**
* 방 정보가져오기
* @param params
* @return
*/
@RequestMapping("/getRoom")
public @ResponseBody List<Room> getRoom(@RequestParam HashMap<Object, Object> params){
return roomList;
}
/**
* 채팅방
* @return
*/
@RequestMapping("/moveChating")
public ModelAndView chating(@RequestParam HashMap<Object, Object> params) {
ModelAndView mv = new ModelAndView();
int roomNumber = Integer.parseInt((String) params.get("roomNumber"));
List<Room> new_list = roomList.stream().filter(o->o.getRoomNumber()==roomNumber).collect(Collectors.toList());
if(new_list != null && new_list.size() > 0) {
mv.addObject("roomName", params.get("roomName"));
mv.addObject("roomNumber", params.get("roomNumber"));
mv.setViewName("chat");
}else {
mv.setViewName("room");
}
return mv;
}
var ws;
window.onload = function(){
getRoom();
createRoom();
}
function getRoom(){
commonAjax('/getRoom', "", 'post', function(result){
createChatingRoom(result);
});
}
function createRoom(){
$("#createRoom").click(function(){
var msg = { roomName : $('#roomName').val() };
commonAjax('/createRoom', msg, 'post', function(result){
createChatingRoom(result);
});
$("#roomName").val("");
});
}
function goRoom(number, name){
location.href="/moveChating?roomName="+name+"&"+"roomNumber="+number;
}
function createChatingRoom(res){
if(res != null){
var tag = "<tr><th class='num'>순서</th><th class='room'>방 이름</th><th class='go'></th></tr>";
res.forEach(function(d, idx){
var rn = d.roomName.trim();
var roomNumber = d.roomNumber;
tag += "<tr>"+
"<td class='num'>"+(idx+1)+"</td>"+
"<td class='room'>"+ rn +"</td>"+
"<td class='go'><button type='button' onclick='goRoom(\""+roomNumber+"\", \""+rn+"\")'>참여</button></td>" +
"</tr>";
});
$("#roomList").empty().append(tag);
}
}
function commonAjax(url, parameter, type, calbak, contentType){
$.ajax({
url: url,
data: parameter,
type: type,
contentType : contentType!=null?contentType:'application/x-www-form-urlencoded; charset=UTF-8',
success: function (res) {
calbak(res);
},
error : function(err){
console.log('error');
calbak(err);
}
});
}
#Reference
https://myhappyman.tistory.com/100