/// <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);
        }
示例#2
0
        /// <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);
 }