C#HttpWebResponse Comet问题

我想知道如何阅读与HttpWebRequest和HttpWebResponse的持久连接。 问题似乎是GetResponseStream()函数在返回之前等待关闭服务器连接。

有没有其他简单的方法来读取彗星连接? 不起作用的示例。

// get the response stream Stream resStream = response.GetResponseStream(); string tempString = null; int count = 0; do { // fill our buffer count = resStream.Read(buf, 0, buf.Length); // as long as we read something we want to print it if (count != 0) { tempString = Encoding.ASCII.GetString(buf, 0, count); Debug.Write(tempString); } } while (true); // any more data to read? 

如果您可以使用WebClient,则没有理由使用HttpWebRequest 。 看看WebClient.OpenRead方法 。 我成功地使用它来读取无限的HTTP响应,如下所示:

 using (var client = new WebClient()) using (var reader = new StreamReader(client.OpenRead(uri), Encoding.UTF8, true)) { string line; while ((line = reader.ReadLine()) != null) { Console.WriteLine(line); } } 

但请注意 ,“长轮询”通常不是发送连续的数据流,而是延迟响应直到某些事件发生,在这种情况下,响应被发送并且连接关闭。 所以你所看到的可能只是Comet按预期工作。