Bonjour à tous,
Je suis en train de réaliser un projet de Vidéo Surveillance. J'utilise Silverlight côté client (je pense que c'est évident d'après le titre ^^ ) et un service web Duplex WCF. Mon client est divisé en 2 : 1 client diffuseur (diffuse l'image de sa webcam sur le serveur) et un client visualiseur (récupère l'image sur le serveur et l'affiche).
Pour une question de simplicité, mon client transmet des images (pour l'instant 1 par seconde) et non un flux vidéo.
Mon projet et quasiment fini, mais j'ai cependant un gros problème. Je vais vous expliquez brièvement comment fonctionne mon appli et vous présenter ce problème :
Mon client diffuseur va poster à intervalle régulier l'image de sa webcam, grâce à un Timer. Pour l'instant tout va bien.
Mon client visualiseur va récupérer cette image à intervalle régulier aussi, grâce à un DispatcherTimer (j'aurais pu aussi utiliser un Timer). Et c'est là que j'ai un problème. La méthode est bien appelé, mais le problème est qu'il faut que j'attende 5 secondes avant d'avoir ma valeur de retour (image). Pourquoi est-ce si long, je n'en sais rien.
Mais avant que l'image n'arrive, le client a déjà fait une nouvelle requête au serveur, donc le temps pour que cette image parvienne au client est repoussé de 5 secondes et ainsi de suite pour toutes les autres images. Ce qui fait que lorsque j'arrête mon DispatcherTimer, il n'y a plus d'appels de méthode donc les images peuvent arriver et c'est ce qu'elles font. Je les ai toutes d'un coup.
J'ai essayé en mettant la fréquence du DispatcherTimer à 15 secondes et je n'ai pas ce problème comme les valeurs de retour ont le temps d'arriver jusqu'au client.
Auriez vous une solution à mon problème, qui est, si je ne me trompe pas, dû au fait que les échanges faits avec Silverlight sont Asynchrone.
Merci d'avance pour vos réponses.
Partager