Skip to content

Commit e144ec1

Browse files
committed
feat: 세션을 활성세션으로 저장
1 parent 5c5f311 commit e144ec1

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

ProjectVG.Application/Services/Session/SessionService.cs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public async Task RegisterSessionAsync(string sessionId, WebSocket socket, strin
3333
ConnectedAt = DateTime.UtcNow
3434
};
3535

36+
// 활성 연결에 추가
37+
_activeConnections.TryAdd(sessionId, connection);
38+
39+
// Repository에도 저장
3640
await _sessionRepository.CreateAsync(connection);
3741
_logger.LogInformation("세션 등록 완료: {SessionId}", sessionId);
3842
}
@@ -47,6 +51,10 @@ public async Task UnregisterSessionAsync(string sessionId)
4751
{
4852
try
4953
{
54+
// 활성 연결에서 제거
55+
_activeConnections.TryRemove(sessionId, out _);
56+
57+
// Repository에서도 제거
5058
await _sessionRepository.DeleteAsync(sessionId);
5159
_logger.LogInformation("세션 해제 완료: {SessionId}", sessionId);
5260
}
@@ -283,11 +291,16 @@ public async Task SendWebSocketMessageAsync(string sessionId, WebSocketMessage m
283291
{
284292
try
285293
{
286-
var connection = await _sessionRepository.GetAsync(sessionId);
287-
if (connection == null)
294+
// 먼저 활성 연결에서 확인
295+
if (!_activeConnections.TryGetValue(sessionId, out var connection))
288296
{
289-
_logger.LogWarning("세션을 찾을 수 없음: {SessionId}", sessionId);
290-
return;
297+
// Repository에서 조회
298+
connection = await _sessionRepository.GetAsync(sessionId);
299+
if (connection == null)
300+
{
301+
_logger.LogWarning("세션을 찾을 수 없음: {SessionId}", sessionId);
302+
return;
303+
}
291304
}
292305

293306
var jsonMessage = JsonSerializer.Serialize(message);
@@ -315,7 +328,7 @@ public async Task SendSessionIdAsync(string sessionId)
315328
try
316329
{
317330
var sessionData = new { session_id = sessionId };
318-
var wsMessage = new WebSocketMessage("session_id", sessionData);
331+
var wsMessage = new WebSocketMessage("session", sessionData);
319332
await SendWebSocketMessageAsync(sessionId, wsMessage);
320333

321334
_logger.LogInformation("세션 ID 전송 완료: {SessionId}", sessionId);

0 commit comments

Comments
 (0)