@@ -7,16 +7,43 @@ namespace Jordnaer.Server.Features.Chat;
7
7
[ Authorize ]
8
8
public class ChatHub : Hub < IChatHub >
9
9
{
10
- public async Task SendChatMessageAsync ( ChatMessageDto chatMessage , string userId )
10
+ private readonly ILogger < ChatHub > _logger ;
11
+
12
+ public ChatHub ( ILogger < ChatHub > logger )
11
13
{
12
- await Clients . User ( userId ) . ReceiveChatMessage ( chatMessage ) ;
14
+ _logger = logger ;
13
15
}
14
- public async Task StartChatAsync ( StartChat startChat )
16
+
17
+ public override async Task OnConnectedAsync ( )
18
+ {
19
+ _logger . LogDebug ( "User {userId} connected to {chatHub}" , Context . User ? . GetId ( ) , nameof ( ChatHub ) ) ;
20
+
21
+ await base . OnConnectedAsync ( ) ;
22
+ }
23
+
24
+ public override async Task OnDisconnectedAsync ( Exception ? exception )
15
25
{
16
- await Clients
26
+ if ( exception is not null )
27
+ {
28
+ _logger . LogError ( exception , "User {userId} disconnected from {chatHub}. " +
29
+ "Exception message: {exceptionMessage}" ,
30
+ Context . User ? . GetId ( ) , nameof ( ChatHub ) , exception . Message ) ;
31
+ }
32
+ else
33
+ {
34
+ _logger . LogDebug ( "User {userId} disconnected from {chatHub}" , Context . User ? . GetId ( ) , nameof ( ChatHub ) ) ;
35
+ }
36
+
37
+ await base . OnConnectedAsync ( ) ;
38
+ }
39
+
40
+ public async Task SendChatMessageAsync ( ChatMessageDto chatMessage , string userId )
41
+ => await Clients . User ( userId ) . ReceiveChatMessage ( chatMessage ) ;
42
+
43
+ public async Task StartChatAsync ( StartChat startChat )
44
+ => await Clients
17
45
. Users ( startChat
18
46
. Recipients
19
47
. Select ( user => user . Id ) )
20
48
. StartChat ( startChat ) ;
21
- }
22
49
}
0 commit comments