通过处理程序ASP.NET将文本传输到客户端

时间:2011-04-30 14:59:21

标签: silverlight-4.0 c#-4.0 handler

为了解决twitters流API不具有跨域文件从客户端访问它(在本例中为Silverlight)我在Web项目中创建了一个Generic Handler文件,该文件基本上从twitter下载流并且当它读取时,将它写入客户端。 这是处理程序代码:

 context.Response.Buffer = false;
        context.Response.ContentType = "text/plain";

        WebRequest request = WebRequest.Create("http://stream.twitter.com/1/statuses/filter.json?locations=-180,-90,180,90");
        request.Credentials = new NetworkCredential("username", "password");
        StreamReader responseStream = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.GetEncoding("utf-8"));

        while (!responseStream.EndOfStream)
        {
                string line = "(~!-/" + responseStream.ReadLine() + "~!-/)";
               context.Response.BinaryWrite((Encoding.UTF8.GetBytes(line)));}

这确实有效,但问题是,一旦客户端断开处理程序,只需进行下载即可。那么如何判断客户端是否仍在忙于接收请求,如果没有,则结束while循环?

另外,我的第二个问题是在客户端执行“ReadLine()”什么都不做,大概是因为它将整个流计为一行,所以永远不会得到完整的响应。为了解决这个问题,我逐字节地阅读它,当它看到“(〜! - /”周围的东西时,它知道这是一条线。非常hacky,我知道。

谢谢!

1 个答案:

答案 0 :(得分:0)

找到了答案!

while (context.Response.IsClientConnected)

:)