【问题标题】:C# HttpWebResponse Comet problemC# HttpWebResponse 彗星问题
【发布时间】:2010-09-18 17:10:26
【问题描述】:

我想知道如何使用 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?

【问题讨论】:

  • 你怎么知道 GetResponseStream() 等待连接关闭?

标签: c# .net httpwebrequest comet httpwebresponse


【解决方案1】:

如果您可以改用WebClient,则几乎没有理由使用HttpWebRequest。看看WebClient.OpenRead Method。我成功地使用它来读取这样的无限 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);
    }
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2010-11-24
    相关资源
    最近更新 更多