middleware/Communication/WSServer.cs
changeset 41 d2f735d7763f
parent 37 37ebedd84755
equal deleted inserted replaced
40:0f31ebcc62b7 41:d2f735d7763f
    92                 socket.OnClose = () =>
    92                 socket.OnClose = () =>
    93                 {
    93                 {
    94                     Console.WriteLine("Close!");
    94                     Console.WriteLine("Close!");
    95                     allSockets.Remove(socket);
    95                     allSockets.Remove(socket);
    96                 };
    96                 };
    97                 /*socket.OnMessage = message =>
       
    98                 {
       
    99                     Console.WriteLine(message);
       
   100                     allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
       
   101                 };*/
       
   102             });
    97             });
   103 
    98 
   104             //On initialise le threadPool (appelé toutes les N ms).
    99             //On initialise le threadPool (appelé toutes les N ms).
   105             ThreadPool.QueueUserWorkItem(ThreadPoolCallback);
   100             ThreadPool.QueueUserWorkItem(ThreadPoolCallback);
   106 
   101 
   108             _gesturesTimer = new System.Timers.Timer(timerElapsing);
   103             _gesturesTimer = new System.Timers.Timer(timerElapsing);
   109             _userPositionTimer = new System.Timers.Timer(timerElapsing/5);
   104             _userPositionTimer = new System.Timers.Timer(timerElapsing/5);
   110             //Dès que le timer est expiré, on appelle _timer_Elapsed.
   105             //Dès que le timer est expiré, on appelle _timer_Elapsed.
   111             _gesturesTimer.Elapsed += new ElapsedEventHandler(_gesturesTimer_Elapsed);
   106             _gesturesTimer.Elapsed += new ElapsedEventHandler(_gesturesTimer_Elapsed);
   112             _userPositionTimer.Elapsed += new ElapsedEventHandler(_userPositionTimer_Elapsed);
   107             _userPositionTimer.Elapsed += new ElapsedEventHandler(_userPositionTimer_Elapsed);
   113 
       
   114             /*var input = Console.ReadLine();
       
   115             while (input != "exit")
       
   116             {
       
   117                 foreach (var socket in allSockets.ToList())
       
   118                 {
       
   119                     socket.Send(input);
       
   120                 }
       
   121                 input = Console.ReadLine();
       
   122             }*/
       
   123         }
   108         }
   124 
   109 
   125         /*
   110         /*
   126          * Méthode appelée à l'expiration du timer pour les gestures et modes.
   111          * Méthode appelée à l'expiration du timer pour les gestures et modes.
   127          */
   112          */
   139         /*
   124         /*
   140          * Méthode appelée à l'expiration du timer pour les positions d'utilisateur.
   125          * Méthode appelée à l'expiration du timer pour les positions d'utilisateur.
   141          */
   126          */
   142         public void _userPositionTimer_Elapsed(object sender, ElapsedEventArgs e)
   127         public void _userPositionTimer_Elapsed(object sender, ElapsedEventArgs e)
   143         {
   128         {
   144             //On débloque la détection de gesture.
       
   145             //gestureLocked = false;
       
   146             //On débloque la notification de nouveau mode.
   129             //On débloque la notification de nouveau mode.
   147             modLocked = false;
   130             modLocked = false;
   148             lastCode = "";
   131             lastCode = "";
   149             //On arrête le timer.
   132             //On arrête le timer.
   150             _userPositionTimer.Stop();
   133             _userPositionTimer.Stop();
   197         /*
   180         /*
   198         * Méthode appelée lorsqu'une gesture a été détectée et que l'événement approprié a été lancé.
   181         * Méthode appelée lorsqu'une gesture a été détectée et que l'événement approprié a été lancé.
   199         */
   182         */
   200         public void GesturePerformed(String code)
   183         public void GesturePerformed(String code)
   201         {
   184         {
   202             //Si le code vient d'être envoyé, on passe.
       
   203             /*if (lastCode.Equals(code))
       
   204                 return;
       
   205             lastCode = code;*/
       
   206             //Si une gesture a été effectuée, on bloque un certain temps.
   185             //Si une gesture a été effectuée, on bloque un certain temps.
   207             if (!gestureLocked)
   186             if (!gestureLocked)
   208             {
   187             {
   209                 gestureLocked = true;
   188                 gestureLocked = true;
   210 
   189 
   211                 //On crée un message contenant le code à envoyer.
   190                 //On crée un message contenant le code à envoyer.
   212                 //if (!gesturesMessageCreated)
   191                 gesturesMessageCreated = true;
   213                 //{
   192                 gesturesMessage = "2-" + code;
   214                     gesturesMessageCreated = true;
   193 
   215                     gesturesMessage = "2-" + code;
   194                 //Console.WriteLine(gesturesMessage);
   216 
       
   217                     //Console.WriteLine(gesturesMessage);
       
   218                     
   195                     
   219                     foreach (var socket in allSockets.ToList())
   196                 foreach (var socket in allSockets.ToList())
   220                     {
   197                 {
   221                         socket.Send(gesturesMessage);
   198                     socket.Send(gesturesMessage);
   222                     }
   199                 }
   223 
   200 
   224                     //On démarre le timer.
   201                 //On démarre le timer.
   225                     _gesturesTimer.Start();
   202                 _gesturesTimer.Start();
   226 
       
   227                     //Console.WriteLine(gestureMessage);
       
   228                 //}
       
   229             }
   203             }
   230         }
   204         }
   231 
   205 
   232         /*
   206         /*
   233         * Méthode appelée lorsqu'on doit entrer dans un autre mode.
   207         * Méthode appelée lorsqu'on doit entrer dans un autre mode.
   234         */
   208         */
   235         public void ModeNotification(String code)
   209         public void ModeNotification(String code)
   236         {
   210         {
   237             //Si le code vient d'être envoyé, on passe.
       
   238             /*if (lastCode.Equals(code))
       
   239                 return;
       
   240             lastCode = code;*/
       
   241             //Si on a été notifié.
   211             //Si on a été notifié.
   242             if (!modLocked)
   212             if (!modLocked)
   243             {
   213             {
   244                 modLocked = true;
   214                 modLocked = true;
   245 
   215 
   246                 //On crée un message contenant le code à envoyer.
   216                 //On crée un message contenant le code à envoyer.
   247                 //if (!modeMessageCreated)
   217                 modeMessageCreated = true;
   248                 //{
   218                 modeMessage = "2-" + code;
   249                     modeMessageCreated = true;
   219                 //On démarre le timer.
   250                     modeMessage = "2-" + code;
   220 
   251                     //On démarre le timer.
   221                 foreach (var socket in allSockets.ToList())
   252 
   222                 {
   253                     foreach (var socket in allSockets.ToList())
   223                     socket.Send(modeMessage);
   254                     {
   224                 }
   255                         socket.Send(modeMessage);
   225                 _userPositionTimer.Start();
   256                     }
       
   257                     _userPositionTimer.Start();
       
   258 
       
   259                     //Console.WriteLine(modeMessage);
       
   260                 //}
       
   261             }
   226             }
   262         }
   227         }
   263 
   228 
   264         /*
   229         /*
   265         * Méthode de callback vérifiant toutes les 25 ms les nouvelles notifications.
   230         * Méthode de callback vérifiant toutes les 25 ms les nouvelles notifications.
   268         */
   233         */
   269         private void ThreadPoolCallback(Object threadContext)
   234         private void ThreadPoolCallback(Object threadContext)
   270         {
   235         {
   271             while (true)
   236             while (true)
   272             {
   237             {
   273                 /*//S'il existe un message de gesture.
       
   274                 if (gesturesMessage != null && !gesturesMessage.Equals(""))// && !gesturesMessage.Equals(prevGestureMessage))
       
   275                 {
       
   276                     //On l'envoie au client (au host et au port spécifiés dans le constructeur).
       
   277                     foreach (var socket in allSockets.ToList())
       
   278                     {
       
   279                         socket.Send(gesturesMessage);
       
   280                         //prevGestureMessage = gesturesMessage;
       
   281                     }
       
   282                 }
       
   283 
       
   284                 //S'il existe un message de mode.
       
   285                 if (modeMessage != null && !modeMessage.Equals(""))// && !modeMessage.Equals(prevModeMessage))
       
   286                 {
       
   287                     //On l'envoie au client (au host et au port spécifiés dans le constructeur).
       
   288                     foreach (var socket in allSockets.ToList())
       
   289                     {
       
   290                         socket.Send(modeMessage);
       
   291                         //prevModeMessage = modeMessage;
       
   292                     }
       
   293                 }*/
       
   294 
       
   295                 //Si la main gauche est détectée.
   238                 //Si la main gauche est détectée.
   296                 if (leftHandMessage != null && !leftHandMessage.Equals("") && !leftHandMessage.Equals(prevLeftHandMessage))
   239                 if (leftHandMessage != null && !leftHandMessage.Equals("") && !leftHandMessage.Equals(prevLeftHandMessage))
   297                 {
   240                 {
   298                     //On l'envoie au client (au host et au port spécifiés dans le constructeur).
   241                     //On l'envoie au client (au host et au port spécifiés dans le constructeur).
   299                     foreach (var socket in allSockets.ToList())
   242                     foreach (var socket in allSockets.ToList())