Classroom güncellemesi hatalar için

This commit is contained in:
Sedat Öztürk 2025-08-31 10:32:26 +03:00
parent 22742966f1
commit b3415a4222
3 changed files with 21 additions and 8 deletions

View file

@ -129,12 +129,22 @@ public class ClassroomHub : Hub
? new ClassroomSettingsDto()
: JsonSerializer.Deserialize<ClassroomSettingsDto>(classroom.SettingsJson);
initialMuteState = !isTeacher && classroomSettings.AutoMuteNewParticipants ? true : classroomSettings.DefaultMicrophoneState == "muted";
initialMuteState = !isTeacher && classroomSettings.AutoMuteNewParticipants
? true
: classroomSettings.DefaultMicrophoneState == "muted";
var participant = await _participantRepository.FirstOrDefaultAsync(
x => x.SessionId == sessionId && x.UserId == userId
);
// 🚨 Kick edilmiş kullanıcı tekrar giriş yapamaz
if (participant != null && !participant.IsActive)
{
await Clients.Caller.SendAsync("Error", "You are not allowed to rejoin this class.");
Context.Abort(); // bağlantıyı anında kapat
return;
}
if (participant == null)
{
participant = new ClassroomParticipant(
@ -458,10 +468,6 @@ public class ClassroomHub : Hub
{
try
{
// Eğer bağlantı zaten iptal edilmişse boşuna uğraşma
if (Context.ConnectionAborted.IsCancellationRequested)
return;
var userId = _currentUser.Id;
if (!userId.HasValue)
{

View file

@ -1,11 +1,14 @@
using System.Security.Claims;
using Microsoft.AspNetCore.SignalR;
namespace Kurs.Platform.Classrooms;
public class CustomUserIdProvider : IUserIdProvider
{
public string GetUserId(HubConnectionContext connection)
public string? GetUserId(HubConnectionContext connection)
{
return connection.User?.FindFirst("sub")?.Value;
return connection.User?.FindFirst("sub")?.Value
?? connection.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;
}
}

View file

@ -39,7 +39,7 @@ export class SignalRService {
.withUrl(`${import.meta.env.VITE_API_URL}/classroomhub`, {
accessTokenFactory: () => auth.session.token || '',
})
.withAutomaticReconnect()
//.withAutomaticReconnect()
.configureLogging(signalR.LogLevel.Information)
.build()
@ -127,6 +127,10 @@ export class SignalRService {
}
})
//2. tane problem var.
//1. problem kick yapamıyorum
//2. Öğrenci veya öğretmen farklı bir sayfaya gidince ekranda donuk şekilde duruyor.
this.connection.on('ForceDisconnect', async (message: string) => {
console.warn('⚠️ ForceDisconnect received:', message)