@@ -41,64 +41,42 @@ public ChatController(UserPresenceService userPresenceService) {
4141 }
4242
4343 @ GetMapping ("/api/chat/connect" )
44- public SseEmitter connect (@ RequestParam String username ,
45- HttpServletRequest request ) {
46-
47- // Генерируем уникальный ID сессии
44+ public SseEmitter connect (@ RequestParam String username , HttpServletRequest request ) {
4845 UUID sessionId = UUID .randomUUID ();
49-
50- // Проверяем, не занято ли имя пользователя (опционально)
5146 if (userPresenceService .isUsernameTaken (username )) {
5247 throw new ResponseStatusException (
5348 HttpStatus .CONFLICT ,
5449 "Имя пользователя уже занято"
5550 );
5651 }
5752
58- SseEmitter emitter = new SseEmitter (60L * 1000 * 60 ); // 60 минут timeout
59-
60- // Создаем пользователя
53+ SseEmitter emitter = new SseEmitter (60L * 1000 * 60 );
6154 RoomUser user = userPresenceService .addUser (username , sessionId , emitter );
62-
63- // Отправляем информацию о пользователе
6455 Map <String , Object > userInfo = new HashMap <>();
6556 userInfo .put ("sessionId" , sessionId );
6657 userInfo .put ("username" , username );
6758 userInfo .put ("connectedAt" , user .connected ());
6859
6960 try {
70- // Отправляем данные о соединении
7161 emitter .send (SseEmitter .event ()
7262 .name ("connected" )
7363 .data (userInfo ));
74-
75- // Отправляем историю сообщений
7664 for (RoomMessage message : messageHistory ) {
7765 emitter .send (SseEmitter .event ()
7866 .name ("message" )
7967 .data (message ));
8068 }
81-
82- // Отправляем текущий список пользователей
8369 sendUserListUpdate ();
8470
8571 } catch (IOException e ) {
8672 userPresenceService .removeUser (sessionId );
8773 emitter .completeWithError (e );
8874 }
75+ emitter .onCompletion (() -> handleUserDisconnect (sessionId , username , "disconnected" ));
8976
90- // Обработчики событий
91- emitter .onCompletion (() -> {
92- handleUserDisconnect (sessionId , username , "disconnected" );
93- });
94-
95- emitter .onTimeout (() -> {
96- handleUserDisconnect (sessionId , username , "timeout" );
97- });
77+ emitter .onTimeout (() -> handleUserDisconnect (sessionId , username , "timeout" ));
9878
99- emitter .onError ((e ) -> {
100- handleUserDisconnect (sessionId , username , "error" );
101- });
79+ emitter .onError ((e ) -> handleUserDisconnect (sessionId , username , "error" ));
10280
10381 return emitter ;
10482 }
0 commit comments