Bonjour à tous,

Je suis en deuxième année de DUT informatique et je suis actuellement an train de développer, avec 3 autres étudiants, une application de vidéo surveillance avec des webcams branchées sur des machines. Pour se faire, nous utilisons Silverlight et un web service WCF. Le client Silverlight se compose de 2 "sous-clients", un qui diffuse l'image de sa webcam et un autre qui visualise cette image. Des images seront transférées et non pas un flux viéo (pour une question de simplicité dans un premier temps). Il y aura par exemple 3,4 images par seconde.

On a fini de coder les clients et j'ai quasiment finie de coder le web service, mais je rencontre quelques problèmes.

Je vais essayer de vous développer au mieux mes problèmes :

- j'ai 2 classes : Webcam et ListeWebcam. Un objet Webcam est composé d'une ip (string), d'un nom(string), d'un booléen active (pour savoir si le client diffusion est actif) et d'un booléen connexion (pour savoir si le client est "connectée" avec un client visualisation). Cette classe est bien entendu accessible aux clients. La classe ListeWebcam, comme son nom l'indique, est constituée d'une List contenant des objets Webcam. Elle est chargée à partir d'un fichier texte. Elle est accessible qu'à partir du service web.



- Voici les méthodes exposées par mon service web :

Côté client visualisation :

- List<WebCam> retourneListeWebCam(); retourne la liste des webcam.

- void miseAJourListeWebcam(List<Webcam> l); met à jour cette liste si un client veut modifier le nom d'une Webcam par exemple.

- void ConnexionClient(Webcam w); Établit une "connexion" avec un client diffuseur.

- void déconnexionClient(Webcam w); Déconnexion de ce client diffuseur.

- string downloadImage(); Pour les tests on va remplacer les images (objets bmp) par des string pour que se soit plus simple dans un premier temps.



Côté client diffusion :

- bool WebcamExiste(); Savoir si la webcam est enregistrée dans la List de Webcam.

- void ajoutWebCam(string nom, string ip); Ajoute la Webcam dans cette liste si elle n'existe pas.

- void attenteClient(string ip); Le client va se mettre en attente jusqu'à ce qu'un client veuille visualiser l'image de sa webcam. La webcam est donc active.

- void uploadImage(string img); pour les tests, envoie une string au serveur à la place d'une image.

- void deconnexionClient(string ip); Met la Webcam inactive.


Chaque client instancie le service web, ils ne pourront pas communiquer entre eux. Comment dois-je faire pour transférer l'image d'un client à un autre par l'intermédiaire du serveur. Sachant que l'image se trouve dans un objet bitmap (je ne sais plus l'intitulé exacte, ce n'est pas moi qui est codé la partie pour récupérer une image du flux vidéo de la webcam). Faut-il obligatoirement que j'enregistre l'image sur le serveur? Si je peux éviter ça serait vraiment pratique.

Mon deuxième soucis est que je ne sais pas comment faire attendre le client diffusion jusqu'à ce qu'un autre client veuille visualiser l'image de sa webcam. Comment peut-il être informé de ça pour qu'il puisse commencer et arrêter la diffusion? Y a-t-il une solution pour ce genre de problèmes?


J'espère que vous avez réussi à comprendre mon problème et que vous pourrez me donner des pistes. Et désoler pour ce gros paver, mais j'essaye d'expliquer le plus précisément mon problème.

Merci d'avance pour vos réponses.