示例#1
0
 public Boolean SaveTextSegment(TranslateMessage translateMessage)
 {
     try
     {
         if (translateMessage.Field == "TextSegment2")
         {
             const string qry       = "UPDATE [dbo].[TextSegment] SET [TextSegment2] = @TextSegment2 WHERE [Id] = @Id AND [TextSegment1] = @TextSegment1";
             int          rowEffect = this.Database.ExecuteSqlCommand(qry,
                                                                      new SqlParameter("@Id", translateMessage.Id),
                                                                      new SqlParameter("@TextSegment1", translateMessage.TextSegment1),
                                                                      new SqlParameter("@TextSegment2", translateMessage.TextSegment2));
             if (rowEffect > 0)
             {
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
         else
         {
             return(true);
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
示例#2
0
        public override void OnClose()
        {
            try
            {
                DashBoardModel dbModel = new DashBoardModel();
                dbModel.UpdateLastModified(this.fileId, String.Format("{0:s}", DateTime.Now));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }

            if (clients.Any(a => a == this))
            {
                clients.Remove(this);
                TranslateMessage translateMessage = new TranslateMessage();
                translateMessage.ClientId = this.clientId;
                translateMessage.SendTime = DateTime.Now;
                translateMessage.UserId   = this.userId;
                translateMessage.UserName = this.userName;
                translateMessage.Color    = this.userColor.Name;
                translateMessage.IsClose  = true;
                foreach (var client in clients)
                {
                    if (((APVTranslator_Web.Socket.wsHandler)client).projectId == this.projectId && ((APVTranslator_Web.Socket.wsHandler)client).fileId == this.fileId)
                    {
                        string msgBack = JsonConvert.SerializeObject(translateMessage);
                        client.Send(msgBack);
                    }
                }
            }
            base.OnClose();
        }
示例#3
0
        private async Task HandlingMessage(TranslateMessage translateMessage, TranslateModel translateModel)
        {
            Boolean bReult = false;
            await Task.Run(() => bReult = translateModel.SaveTextSegment(translateMessage));

            translateMessage.ClientId = this.clientId;
            translateMessage.SendTime = DateTime.Now;
            translateMessage.UserId   = this.userId;
            translateMessage.UserName = this.userName;
            translateMessage.Color    = this.userColor.Name;
            string jsonMessage = JsonConvert.SerializeObject(translateMessage);

            this.lastMessage = jsonMessage;
            if (bReult)
            {
                foreach (var item in clients)
                {
                    if (item != this && ((APVTranslator_Web.Socket.wsHandler)item).projectId == this.projectId && ((APVTranslator_Web.Socket.wsHandler)item).fileId == this.fileId)
                    {
                        string msgBack = jsonMessage;
                        item.Send(msgBack);
                    }
                }
                ;
            }
            else
            {
                string msgBack = string.Format("{0} have sent {1} at {2}", this.WebSocketContext.User.Identity.Name, "Something error!", DateTime.Now.ToLongTimeString());
                this.Send(msgBack);
            }
        }
 private void Work(object obj)
 {
     try
     {
         var        paras     = obj as object[];
         IPEndPoint remoteIP  = paras[0] as IPEndPoint;
         byte[]     msgBuffer = paras[1] as byte[];
         byte[]     buffer    = null;
         object     msgObj    = FormatterHelper.Deserialize(msgBuffer);
         if (msgObj is LoginMessage)
         {
             LoginMessage         lginMsg              = (LoginMessage)msgObj;
             IPEndPoint           userEndPoint         = new IPEndPoint(remoteIP.Address, remoteIP.Port);
             User                 user                 = new User(lginMsg.UserName, userEndPoint);
             OnFriendLoginMessage onFriendLoginMessage = new OnFriendLoginMessage(user);
             buffer = FormatterHelper.Serialize(onFriendLoginMessage);
             foreach (User item in userList)
             {
                 server.Send(buffer, buffer.Length, item.NetPoint);
             }
             if (!userList.Contain(user))
             {
                 userList.Add(user);
             }
             // 发送应答消息
             OnLoginMessage onloginmsg = new OnLoginMessage(userList);
             buffer = FormatterHelper.Serialize(onloginmsg);
             server.Send(buffer, buffer.Length, remoteIP);
         }
         else if (msgObj is LogoutMessage)
         {
             P2P.WellKnown.C2S.LogoutMessage lgoutMsg = (P2P.WellKnown.C2S.LogoutMessage)msgObj;
             User lgoutUser = userList.Find(lgoutMsg.UserName);
             if (lgoutUser != null)
             {
                 userList.Remove(lgoutUser);
             }
         }
         else if (msgObj is P2P.WellKnown.C2S.DownLoadMessage)
         {
             //DownLoadMessage downLoadMessage = msgObj as DownLoadMessage;
             //UdpTranferFile.UdpSendFile udpSendFile = new UdpTranferFile.UdpSendFile(remoteIP.Address.ToString(), downLoadMessage.Port, 2280);
             //udpSendFile.Start();
             //UdpTranferFile.SendFileManager sendFileManager = new UdpTranferFile.SendFileManager(downLoadMessage.FileName);
             //if (udpSendFile.CanSend(sendFileManager))
             //{
             //    udpSendFile.SendFile(sendFileManager, null);
             //}
             //else
             //{
             //    //MessageBox.Show("文件正在发送,不能发送重复的文件。");
             //}
         }
         else if (msgObj is GetUsersMessage)
         {
             GetUsersResponseMessage srvResMsg = new GetUsersResponseMessage(userList);
             buffer = FormatterHelper.Serialize(srvResMsg);
             foreach (User user in userList)
             {
                 server.Send(buffer, buffer.Length, user.NetPoint);
             }
         }
         else if (msgObj is MassMsg)
         {
             SendToEveryBody();
         }
         else if (msgObj is TranslateMessage)
         {
             TranslateMessage transMsg = (P2P.WellKnown.C2S.TranslateMessage)msgObj;
             User             toUser   = userList.Find(transMsg.ToUserName);
             // 转发Purch Hole请求消息
             if (toUser == null)
             {
                 //Console.WriteLine("Remote host {0} cannot be found at index server", transMsg.ToUserName);
             }
             else
             {
                 SomeOneCallYouMessage transMsg2 = new SomeOneCallYouMessage(remoteIP);
                 buffer = FormatterHelper.Serialize(transMsg);
                 server.Send(buffer, buffer.Length, toUser.NetPoint);
             }
         }
     }
     catch (Exception)
     {
     }
 }