> Se mettre en idle garde-t-il une connexion ouverte entre le client et le serveur ?
Oui, la connexion reste ouverte.
> N’y-a-t-il pas de risque de sur-charge à avoir un tel type de fonctionnalité ?
Ça consomme un petit peu de ressources, mais bien fait, ça reste négligeable.
> En idle comment fait le serveur pour savoir si le client est toujours en attente ou s’il est parti, y compris à cause d’un arrêt inopiné (donc sans avoir pu prévenir le serveur) ?
Il peut faire confiance à TCP pour s'occuper de ça ou envoyer de temps à autres un ping (genre une fois toutes les 10 minutes).
> Du coup les serveurs ne risquent-ils pas de placer un timeout assez réduit, forçant les clients à régulièrement notifier les serveurs de leur présence... que devient alors l’intérêt de la notification serveur→client ?
C'est relativement coûteux d'établir une connexion. Il y a d'abord le 3-way handshake de TCP, puis éventuellement l'établissement de la session SSL (dans le cas d'HTTPS ou d'IMAPS par exemple) et surtout, ça demande au serveur de retrouver le contexte associé à ce client (vérifier des crédentiels, aller chercher des informations en base de données ou dans un fichier, etc.).
[^] # Re: Ma compréhension de la techno
Posté par Bruno Michel (site web personnel) . En réponse au journal Les websockets sont pas secioures. Évalué à 6.
Oui, la connexion reste ouverte.
> N’y-a-t-il pas de risque de sur-charge à avoir un tel type de fonctionnalité ?
Ça consomme un petit peu de ressources, mais bien fait, ça reste négligeable.
> En idle comment fait le serveur pour savoir si le client est toujours en attente ou s’il est parti, y compris à cause d’un arrêt inopiné (donc sans avoir pu prévenir le serveur) ?
Il peut faire confiance à TCP pour s'occuper de ça ou envoyer de temps à autres un ping (genre une fois toutes les 10 minutes).
> Du coup les serveurs ne risquent-ils pas de placer un timeout assez réduit, forçant les clients à régulièrement notifier les serveurs de leur présence... que devient alors l’intérêt de la notification serveur→client ?
C'est relativement coûteux d'établir une connexion. Il y a d'abord le 3-way handshake de TCP, puis éventuellement l'établissement de la session SSL (dans le cas d'HTTPS ou d'IMAPS par exemple) et surtout, ça demande au serveur de retrouver le contexte associé à ce client (vérifier des crédentiels, aller chercher des informations en base de données ou dans un fichier, etc.).