Skip to content

Commit 83be8d0

Browse files
authored
Merge branch 'dev' into fe/dev/feat_friendApi/#202
2 parents c30b119 + fba0abe commit 83be8d0

File tree

172 files changed

+2988
-1939
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

172 files changed

+2988
-1939
lines changed

src/backend/auth-server/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@
3939
"mysql2": "^3.12.0",
4040
"reflect-metadata": "^0.2.2",
4141
"rxjs": "^7.8.1",
42-
"typeorm": "^0.3.20",
43-
"prom-client": "^15.1.3"
42+
"typeorm": "^0.3.20"
4443
},
4544
"devDependencies": {
4645
"@eslint/eslintrc": "^3.2.0",

src/backend/chat-server/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ repositories {
1818
}
1919

2020
dependencies {
21-
implementation 'org.springframework.boot:spring-boot-starter-actuator'
22-
implementation 'io.micrometer:micrometer-registry-prometheus'
21+
implementation 'io.github.dnovitski:logback-awslogs-appender:1.7.2'
2322
implementation 'org.springframework.boot:spring-boot-starter-web'
2423
implementation 'org.springframework.boot:spring-boot-starter-websocket'
2524
implementation 'org.springframework.kafka:spring-kafka'

src/backend/chat-server/src/main/java/kickzo/stomp_chat/config/WebSocketConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ public void registerStompEndpoints(StompEndpointRegistry registry) {
2323
registry.addEndpoint("/ws")
2424
.setAllowedOriginPatterns("*")
2525
.withSockJS();
26+
27+
registry.addEndpoint("/ws/mobile")
28+
.setAllowedOriginPatterns("*");
2629
}
2730
}
2831

src/backend/chat-server/src/main/java/kickzo/stomp_chat/controller/WebSocketController.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package kickzo.stomp_chat.controller;
22

3+
import java.math.BigDecimal;
4+
import java.math.RoundingMode;
5+
36
import com.fasterxml.jackson.databind.ObjectMapper;
47

58
import kickzo.stomp_chat.enums.EventType;
@@ -75,5 +78,12 @@ public void playTime(String payload) throws Exception {
7578
public record UserConnectRequest(long userId) {}
7679
public record SendMessageRequest(long roomId, long userId, String nickname, int role, String profileImageUrl, String content, String message) {}
7780

78-
public record PlayTimeRequest(long roomId, long playTime, String playerState) {}
81+
public record PlayTimeRequest(long roomId, BigDecimal playTime, String playerState) {
82+
public PlayTimeRequest(long roomId, BigDecimal playTime, String playerState) {
83+
this.roomId = roomId;
84+
this.playTime = playTime.setScale(2, RoundingMode.HALF_UP); // 소수점 2자리로 변환
85+
this.playerState = playerState;
86+
}
87+
}
88+
7989
}

src/backend/chat-server/src/main/java/kickzo/stomp_chat/dto/playlist/PlayTime.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package kickzo.stomp_chat.dto.playlist;
22

3+
import java.math.BigDecimal;
4+
import java.math.RoundingMode;
5+
36
import lombok.AllArgsConstructor;
47
import lombok.Getter;
58
import lombok.NoArgsConstructor;
@@ -9,6 +12,6 @@
912
@NoArgsConstructor
1013
public class PlayTime {
1114
private long roomId;
12-
private long playTime;
15+
private BigDecimal playTime;
1316
private String playerState;
1417
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package kickzo.stomp_chat.dto.room;
22

3-
public record ChatMessage(long roomId, long userId, String nickname, int role, String profileImageUrl, String content, String message) {}
3+
public record ChatMessage(long roomId, long userId, String nickname, int role, String profileImageUrl, String content, String message, long timestamp) {}

src/backend/chat-server/src/main/java/kickzo/stomp_chat/service/WebSocketRoomService.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package kickzo.stomp_chat.service;
22

3+
import java.math.BigDecimal;
4+
35
import org.springframework.beans.factory.annotation.Value;
46
import org.springframework.stereotype.Service;
57

@@ -34,7 +36,8 @@ public void leavePage(long userId) {
3436
* 방에 메시지 전송
3537
*/
3638
public void handleMessageSend(long roomId, long userId, String nickname, int role, String profileImageUrl, String content, String message) {
37-
ChatMessage chatMessage = new ChatMessage(roomId, userId, nickname, role, profileImageUrl, content, message);
39+
long timestamp = System.currentTimeMillis(); // 현재 서버 시간
40+
ChatMessage chatMessage = new ChatMessage(roomId, userId, nickname, role, profileImageUrl, content, message, timestamp);
3841
kafkaRepository.sendChatMessage(chatMessage);
3942
}
4043

@@ -49,7 +52,7 @@ public void sendConnection(long userId, EventType eventType) {
4952
/**
5053
* Kafka에 playlistTime 전송
5154
*/
52-
public void sendPlayTime (long roomId, long playTime, String playerState){
55+
public void sendPlayTime (long roomId, BigDecimal playTime, String playerState){
5356
PlayTime playTimeObject = new PlayTime(roomId, playTime, playerState);
5457

5558
RoomEvent roomEvent = new RoomEvent("play-time", playTimeObject);

src/backend/chat-server/src/main/resources/application.properties

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,4 @@ spring.profiles.active=dev
1010
spring.kafka.consumer.group-id=my-group-${server.port}
1111
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
1212
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
13-
spring.kafka.consumer.auto-offset-reset=earliest
14-
15-
# Actuator ????? ?? ??
16-
management.endpoints.web.exposure.include=health,metrics,prometheus
17-
18-
# Prometheus ??? ?? ???
19-
management.prometheus.metrics.export.enabled=true
20-
management.metrics.web.server.request.auto-timeouts=true
21-
22-
# ????? ??? ?? ??? ??? ??
23-
# Actuator ???? ?? (???? 8080)
24-
management.server.port=8080
13+
spring.kafka.consumer.auto-offset-reset=earliest
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration packagingData="true">
3+
<timestamp key="timestamp" datePattern="yyyy-MM-dd-HH-mm-ssSSS"/>
4+
5+
<appender name="aws_cloud_watch_log" class="ca.pjer.logback.AwsLogsAppender">
6+
<layout>
7+
<pattern>[%thread] [%date] [%level] [%file:%line] - %msg%n</pattern>
8+
</layout>
9+
<logGroupName>kickzo-logs</logGroupName>
10+
<logStreamUuidPrefix>kickzo-log</logStreamUuidPrefix>
11+
<logRegion>ap-northeast-1</logRegion>
12+
<maxBatchLogEvents>50</maxBatchLogEvents>
13+
<maxFlushTimeMillis>30000</maxFlushTimeMillis>
14+
<maxBlockTimeMillis>5000</maxBlockTimeMillis>
15+
<retentionTimeDays>0</retentionTimeDays>
16+
<accessKeyId>${AWS_ACCESS_KEY}</accessKeyId>
17+
<secretAccessKey>${AWS_SECRET_KEY}</secretAccessKey>
18+
</appender>
19+
20+
<property name="CONSOLE_LOG_PATTERN" value="%highlight(%-5level) %date [%thread] %cyan([%C{0} :: %M :: %L]) - %msg%n"/>
21+
<appender name="console_log" class="ch.qos.logback.core.ConsoleAppender">
22+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
23+
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
24+
</encoder>
25+
</appender>
26+
27+
<springProfile name="dev">
28+
<root level="INFO">
29+
<appender-ref ref="console_log"/>
30+
</root>
31+
</springProfile>
32+
33+
<springProfile name="docker">
34+
<root level="WARN">
35+
<appender-ref ref="aws_cloud_watch_log"/>
36+
</root>
37+
</springProfile>
38+
</configuration>

src/backend/chat-server/src/main/resources/static/index.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ <h2>Room Chat</h2>
5959
<div id="messages"></div>
6060
<input type="text" id="messageInput" placeholder="Enter your message" />
6161
<button onclick="sendMessage()">Send</button>
62-
<button onclick="sendPlaylistTime(12)">Send Playlist Time (12 sec)</button>
62+
<button onclick="sendplayTime(12.12354)">Send Play Time (12.12354 sec)</button>
6363
</div>
6464

6565
<div id="status">Status: Disconnected</div>
@@ -161,14 +161,14 @@ <h2>Room Chat</h2>
161161
console.log('Sent message:', payload);
162162
}
163163

164-
function sendPlaylistTime(playlistTime) {
164+
function sendplayTime(playTime) {
165165
if (stompClient && stompClient.connected) {
166166
const payload = JSON.stringify({
167167
roomId: roomId,
168-
playlistTime: playlistTime
168+
playTime: playTime
169169
});
170170
stompClient.send('/app/play-time', {}, payload);
171-
console.log('Sent playlistTime:', payload);
171+
console.log('Sent playTime:', payload);
172172
} else {
173173
console.error('WebSocket not connected.');
174174
}

0 commit comments

Comments
 (0)