Je travaille sur une application Comet écrite en ASP.NET. Il existe un tableau de contextes de connexion actifs (HttpContext). Et il y a un fil qui devrait périodiquement parcourir la collection et vérifier leur état. L'architecture de l'application n'est donc pas thread-per-request.Vérifier la connexion est active dans ASP.NET
Quelle est la meilleure façon de vérifier qu'une connexion est active (non fermée par l'hôte distant)?
Je trouve ceci:
context.Response.Write(' ');
context.Response.Flush();
if (!context.Response.IsClientConnected)
{
// ...
}
Mais ce n'est pas une bonne solution car il faut un temps de fil à traiter (flush() est l'opération de blocage). J'ai besoin d'une solution qui fonctionne très rapidement pour de nombreuses connexions simultanées et n'utilise pas d'opérations de blocage.
Peut-être existe-t-il des fonctionnalités IIS ou ASP.NET qui permettent de surveiller les connexions de cette façon?
C'est un service de discussion avec la fin du client Flash. Et c'est le moyen de déterminer quand un client se déconnecte. – alexey
Je ne vois pas pourquoi à partir de la "communication HTTP sous-jacente". HTTP est un flux généralement sur TCP. Si le client ferme la connexion, le flux TCP est rompu (et il s'agit d'un événement détectable lors d'un arrêt TCP propre, voir 'FIN', moins si quelqu'un coupe simplement les fils); alors la connexion HTTP elle-même est connue pour être fermée (car il n'y a aucune future connexion TCP qui peut se connecter à ce flux HTTP). Comet n'est pas différent car il s'agit seulement d'un flux HTTP de longue durée. – user2864740
http://stackoverflow.com/questions/33449876/how-does-asp-net-httpresponse-isclientconnected-work – user2864740