https://kwaksh2319.tistory.com/1003
웹소켓통신 서버 이용하여 간단한 채팅방 만들기1
구조 : STOMPSTOMP은 **"Simple (or Streaming) Text Oriented Messaging Protocol"**의 약자입니다. 웹소켓(WebSocket)을 사용할 때 메시지를 주고받기 위한 프로토콜 중 하나로, 텍스트 기반의 메시징 프로토콜입니다.
kwaksh2319.tistory.com
지난번에 이어서~
테이블 설계도 조금 변경했습니다. ( 퇴근 후 개발하는건 늘 쉽지 않네요 ~ , 퇴근후 딴짓을 너무 많이하네요 ㅠ ㅠ )
간단하게 방리스트들을 만들었습니다.
화면 :

1:n 관계로 메세지 테이블을 만들어줬습니다.

지난번에 소켓통신을 통해서 메세지를 가져왔고요.
이번엔 먼저 간단하게 룸이랑 룸 생성후 리스트만 불러오도록 했습니다.
room
@Entity
@Table(name = "Room")
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class Room {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ROOM_SEQ")
@SequenceGenerator(name = "ROOM_SEQ", sequenceName = "ROOM_SEQ", allocationSize = 1)
@Column(name = "ID")
private Long id;
private String roomId;
private String ip;
@CreationTimestamp
@Column(updatable = false)
private LocalDateTime createdAt;
@OneToMany(mappedBy = "room", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Message> messages = new ArrayList<>();
}
jparepository는 간단하게 생략하고 리스트 불러오는 서비스쪽 코드는
@Override
public Page<RoomListDTO> findAll(int page, int size) {
Pageable pageable = PageRequest.of(page, size, Sort.by("createdAt").descending());
Page<Room> rooms= roomRepository.findAll(pageable);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Page<RoomListDTO> roomDTOs=rooms.map(room ->RoomListDTO.builder()
.id(room.getId())
.roomId(room.getRoomId())
.createdAt(room.getCreatedAt().format(formatter))
.build());
return roomDTOs;
}
리스트들을 불러올거고요.
dto는
@Getter
@Setter
@Builder
public class RoomListDTO {
private Long id;
private String roomId;
private String createdAt;
}
해당 파라미터들을 가져와서 룸리스트를 보여줄겁니다.
프론트코드는 ajax를 통해서 가져올거고요.
function getRoomList(){
var page = 0;
var size = 10;
// Ajax 호출
$.ajax({
url: '/room/' + page + '/' + size,
type: 'GET',
dataType: 'json',
success: function(response) {
var rooms = response.content;
var tbody = $('#roomTable tbody');
tbody.empty();
if(rooms && rooms.length > 0) {
$.each(rooms, function(index, room) {
var tr = $('<tr></tr>');
tr.append('<td>' + room.id + '</td>');
tr.append('<td>' + room.roomId + '</td>');
tr.append('<td>' + room.createdAt + '</td>');
tbody.append(tr);
});
} else {
tbody.append('<tr><td colspan="3">No rooms available.</td></tr>');
}
},
error: function(xhr, status, error) {
console.error("Ajax 호출 에러: ", error);
}
});
}
html 내용입니다.
<h1 style="text-align: center;">Room List </h1>
<table id="roomTable">
<thead>
<tr>
<th>ID</th>
<th>방 제목</th>
<th>등록일</th>
</tr>
</thead>
<tbody>
<!-- 데이터가 여기 채워집니다 -->
</tbody>
</table>
'웹 > Spring vue 웹 개발' 카테고리의 다른 글
웹소켓통신 서버 이용하여 간단한 채팅방 만들기3 (0) | 2025.02.10 |
---|---|
웹소켓통신 서버 이용하여 간단한 채팅방 만들기1 (0) | 2025.01.26 |
간단한 주식 사이트 만들어보기01 (3) | 2024.10.15 |
웹소켓 통신 인터페이스 만들기 (2) | 2024.10.09 |
JWT- Swagger에 적용 (0) | 2024.01.27 |