Table of Contents

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:

  1. Validira i enkriptuje tekst
  2. Snima u bazu
  3. Ažurira LastMessageAt na konverzaciji
  4. Kreira in-app notifikaciju za primaoca
  5. Broadcast-uje ReceiveMessage svima u sobi konverzacije
  6. 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.