J'ai un WebRequest qui CREATEST une connexion persistante (keepalive) au serveur, par exemple .:Pourquoi j'obtiens l'endOfStream dans un webrequest, s'il s'agit d'une connexion persistante (keepalive)?
webRequest.ContentType = "application/x-www-form-urlencoded";
// Set the ContentLength property of the WebRequest.
webRequest.ContentLength = byteArray.Length;
webRequest.Timeout = Timeout.Infinite;
webRequest.KeepAlive = true;
webRequest.ReadWriteTimeout = Timeout.Infinite;
//[System.Threading.Timeout]::Infinite
webRequest.UserAgent = "www.socialblazeapp.com";
Stream dataStream = webRequest.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();
// Get the response.
webResponse = (HttpWebResponse)webRequest.GetResponse();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
responseStream = new StreamReader(webResponse.GetResponseStream(), encode);
while(!responseStream.EndOfStream){ //do something}
Je me demande pourquoi responseStream.EndOfStream devient vrai après un certain temps. J'aurais supposé que parce que c'est une connexion persistante, le flux ne serait jamais fermer?
Des idées pour lesquelles cela se passe?
Cela a du sens, alors disons que je veux garder une connexion ouverte à un serveur web pendant quelques heures (avec données en streaming tout le temps), comment pourrais-je accomplir cela? – rksprst
Basé sur votre question ici et à l'autre réponse, je pense que vous comprenez mal les concepts de streaming et de persistance de la connexion. Indépendamment des types de connexion, HTTP est une conversation de demande/réponse. Vous allez toujours émettre une requête finie, et le serveur vous donnera toujours une réponse finie, ce qui implique qu'il y a une fin à cette réponse. Ce que vous cherchez, si je comprends bien (et corrigez-moi si je me trompe), est essentiellement une façon d'avoir une seule variable de réponse et de pouvoir l'utiliser encore et encore. Tu ne pourras pas faire ça. – CodingGorilla
Ce que j'essaie de faire est de me connecter à l'API Streaming de Twitter (http://dev.twitter.com/pages/streaming_api) Dans la section "Connexion", ils ont un texte qui implique que vous devriez être capable de le faire dans afin de se connecter à l'API de streaming via HTTP. Si je ne peux pas garder un flux de réponse ouvert via HTTP, alors je ne comprends pas comment Twitter aimerait que nous maintenions la connexion? Ou, ai-je encore mal compris quelque chose? – rksprst