Class ChatHub
- Namespace
- UsluzionicaServer.Hubs
- Assembly
- UsluzionicaServer.dll
SignalR hub za real-time chat. Konekcija: wss://host/hubs/chat?access_token=JWT
Svaki korisnik pri konektovanju automatski ulazi u grupu "user-{userId}". Kada se pridruži konverzaciji (JoinConversation), ulazi i u grupu "conversation-{id}".
[Authorize]
public sealed class ChatHub : Hub, IDisposable
- Inheritance
-
ChatHub
- Implements
- Inherited Members
Constructors
- ChatHub(AppDbContext, MessageEncryption, OnlineTracker, NotificationService, BlockService, ILogger<ChatHub>)
SignalR hub za real-time chat. Konekcija: wss://host/hubs/chat?access_token=JWT
Svaki korisnik pri konektovanju automatski ulazi u grupu "user-{userId}". Kada se pridruži konverzaciji (JoinConversation), ulazi i u grupu "conversation-{id}".
Methods
- JoinConversation(int)
Klijent poziva ovo da bi "ušao" u sobu konverzacije. Nakon toga prima ReceiveMessage evente za tu konverzaciju. Validira da korisnik zaista pripada toj konverzaciji.
- OnConnectedAsync()
Called when a new connection is established with the hub.
- OnDisconnectedAsync(Exception?)
Called when a connection with the hub is terminated.
- SendMessage(int, string)
Klijent šalje poruku. Server:
- Validira i enkriptuje tekst
- Snima u bazu
- Ažurira LastMessageAt na konverzaciji
- Kreira in-app notifikaciju za primaoca
- Broadcast-uje ReceiveMessage svima u sobi konverzacije
- Vraća potvrdu pošiljaocu (Caller.SendAsync "MessageSent")
- UserTyping(int)
Kada korisnik kuca, emituje "TypingIndicator" ostalima u konverzaciji. Klijent treba da poziva ovo svake ~2 sekunde dok korisnik kuca.