communication temps réel entre un client et un serveur

1 réponse
Avatar
Jean-Marie
Bonjour

j'ai développé une application cliente qui se connecte à notre serveur
pour recevoir des données en temps réel et qui permet de faire des
traitements à partir de ses données.
Quand j'emploie l'expression "temps réel", je veux dire que lorsque le
serveur reçoit une information qu'il doit transmettre au client,
il le fait instantanément.

nous proposons 2 protocoles qui s'appuie sur TCP/IP :
dans tous les cas le client se connecte sur une adresse IP

-1er protocole
le client doit ouvrir un port spécifique (exemple 1234)
dans ce mode le socket peut rester continuellement ouvert
et donc recevoir les données en temps réel
(j'utilise pour cela la classe Socket)

l'inconvénient de ce protocole est d'obliger l'administrateur à ouvrir
ce port spécifique, ce qui n'est pas toujours facile

-2ème protocole : HTTP
implique l'ouverture du port 80
(j'utilise HttpURLConnection)

actuellement la connexion reste toujours ouverte

l'inconvénient est que le client doit configurer son proxy pour
permettre cette ouverture permanente

--------
En conclusion dans les 2 cas il y a des inconvénients ;
il faut ouvrir un port (c'est le minimum), et pour http paramétrer
le proxy ce qui est parfois un peu galère dans une grosse entreprise

une solution serait de faire des requêtes HTTP chaque minute,
ou toutes les 2 minutes ce qui simplifierait le paramétrage du proxy ;
(descendre en-dessous de la minute risquerait d'effondrer le serveur)
PB : avec une requête toutes les minutes on n'est plus en temps réel,
à savoir que lorsque le serveur reçoit l'information à transmettre
au client, il peut donc y avoir un retard d'une minute

--------
certains personnes me parlent de jeux interactifs sur internet,
impliquant un bon nombre d'utilisateurs jouant en parallèle
et communiquant instantanément...
y-a-t'il derrière ces jeux un protocole de rêve et/ou un serveur
hyper-puissant ?

merci pour vos pistes

Jean-Marie

1 réponse

Avatar
Yliur
Une réponse un peu tardive, mais sait-on jamais... :)

> nous proposons 2 protocoles qui s'appuie sur TCP/IP :
> dans tous les cas le client se connecte sur une adresse IP

Est-ce que vous proposez à vos clients les deux solutions (et devez donc
gérer les deux) ? Ou est-ce que vous avez ces deux idées (la première
étant évidemment beaucoup plus simple) ?

> certains personnes me parlent de jeux interactifs sur internet,
> impliquant un bon nombre d'utilisateurs jouant en parallèle
> et communiquant instantanément...
> y-a-t'il derrière ces jeux un protocole de rêve et/ou un serveur
> hyper-puissant ?

Un bon serveur c'est sûr.
Et une connexion permanente entre le serveur et chaque client
(sur votre premier modèle) : il n'y a pas d'http ici. Et pas de
contrainte sur l'ouverture du port par l'administrateur.


Jean-Marie a écrit :
Bonjour

j'ai développé une application cliente qui se connecte à notre serveur
pour recevoir des données en temps réel et qui permet de faire des
traitements à partir de ses données.
Quand j'emploie l'expression "temps réel", je veux dire que lorsque le
serveur reçoit une information qu'il doit transmettre au client,
il le fait instantanément.

nous proposons 2 protocoles qui s'appuie sur TCP/IP :
dans tous les cas le client se connecte sur une adresse IP

-1er protocole
le client doit ouvrir un port spécifique (exemple 1234)
dans ce mode le socket peut rester continuellement ouvert
et donc recevoir les données en temps réel
(j'utilise pour cela la classe Socket)

l'inconvénient de ce protocole est d'obliger l'administrateur à ouvrir
ce port spécifique, ce qui n'est pas toujours facile

-2ème protocole : HTTP
implique l'ouverture du port 80
(j'utilise HttpURLConnection)

actuellement la connexion reste toujours ouverte

l'inconvénient est que le client doit configurer son proxy pour
permettre cette ouverture permanente

--------
En conclusion dans les 2 cas il y a des inconvénients ;
il faut ouvrir un port (c'est le minimum), et pour http paramétrer
le proxy ce qui est parfois un peu galère dans une grosse entreprise

une solution serait de faire des requêtes HTTP chaque minute,
ou toutes les 2 minutes ce qui simplifierait le paramétrage du proxy ;
(descendre en-dessous de la minute risquerait d'effondrer le serveur)
PB : avec une requête toutes les minutes on n'est plus en temps réel,
à savoir que lorsque le serveur reçoit l'information à transmettre
au client, il peut donc y avoir un retard d'une minute

--------
certains personnes me parlent de jeux interactifs sur internet,
impliquant un bon nombre d'utilisateurs jouant en parallèle
et communiquant instantanément...
y-a-t'il derrière ces jeux un protocole de rêve et/ou un serveur
hyper-puissant ?

merci pour vos pistes

Jean-Marie