/// <summary> /// 根据学生机 ConnectionId 获取教师机信息 /// </summary> /// <param name="studentConnId"></param> /// <returns></returns> public TeacherClientSummary GetTeacherClient(string studentConnId) { TeacherClientSummary teacherClient = null; foreach (var tclient in TeacherClients) { var exists = tclient.StudentClients.Any(p => p.ConnectionId == studentConnId); if (exists) { teacherClient = tclient; break; } } return(teacherClient); }
/// <summary> /// 教师机注册 /// TODO:教师机数量限制 /// </summary> /// <param name="registerInfo">注册信息</param> /// <returns></returns> public async Task RegisterTeacher(RegisterCmdParams registerInfo) { if (registerInfo.Identity != IdentityType.Teacher) { _logger.LogError("注册信息 Identity 错误"); throw new ArgumentException("注册信息 Identity 错误"); } var ip = Context.GetHttpContext().Connection.RemoteIpAddress.ToString(); var clientSummary = new TeacherClientSummary { Identity = registerInfo.Identity, ConnectionId = Context.ConnectionId, IsConnected = true, RemoteIpAddress = ip, TeacherCode = registerInfo.TeacherCode }; // 保存教师机信息 _clientStorage.TeacherClients.Add(clientSummary); // 创建教师机分组 // await Groups.AddToGroupAsync(Context.ConnectionId, clientSummary.Code); // 保存消息记录、应答注册成功 var receivers = new List <MessageReceiver> { new MessageReceiver() { ConnectionId = Context.ConnectionId } }; var messageSummary = _messageHistory.SaveMessage(Context.ConnectionId, receivers, "RegisterSuccess", "RegisterSuccess", registerInfo); clientSummary.MessageId = messageSummary.Id; await Clients.Caller.RegisterSuccess(clientSummary); }
/// <summary> /// 持久化教师机信息 /// </summary> /// <param name="client"></param> public void AddTeacherClient(TeacherClientSummary client) { TeacherClients.Add(client); }