Kos*_*aki 6 .net c# comet httpwebrequest httpwebresponse
我想知道我将如何阅读与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?
Run Code Online (Sandbox Code Playgroud)
如果您可以使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
但请注意,"长轮询"通常不是发送连续的数据流,而是延迟响应直到某些事件发生,在这种情况下,响应被发送并且连接关闭.所以你所看到的可能只是Comet按预期工作.
归档时间: |
|
查看次数: |
2111 次 |
最近记录: |