如何使用 owin/katana 流式传输动态 jpeg?

How to stream a motion jpeg using owin/katana?

我在 windows 服务中自行托管 OWIN/KATANA。现在我已经实现了一种从相机中抓取单个图像的方法。我想从相机中抓取多帧并将它们流式传输回 html 页面上的 img 标签。 OWIN/KATANA 这可能吗?

app.Map("/Camera/Video", a =>
{
    a.Run(context =>
    {
        string connectionid = CurrentDevice.Value.ToString();
        object ret = DeviceManager.Instance.SendMessageToDevice(connectionid, "startmovie");
        context.Response.Headers.Add("Content-Type", new string[] { "multipart/x-mixed-replace; boundary=--jpgboundary" });

        bool con = true;
        StreamWriter writer = new StreamWriter(context.Response.Body);
        while (con)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                Image img = (Image)DeviceManager.Instance.SendMessageToDevice(connectionid, "capturestill");
                img.Save(ms, ImageFormat.Jpeg);
                byte[] buffer = ms.GetBuffer();

                writer.WriteLine("--jpgboundary");
                writer.WriteLine("Content-Type: image/jpeg");
                writer.WriteLine(string.Format("Content-length: {0}", buffer.Length));
                writer.WriteLine();
                context.Response.Write(buffer);
                //writer.WriteLine(Convert.ToBase64String(buffer));
                writer.Flush();
            }
            Thread.Sleep(200);
        }
        DeviceManager.Instance.SendMessageToDevice(connectionid, "stopmovie");
        return context.Response.WriteAsync("");
    });
});

我明白我的问题是什么了。我正在使用 WriteAsync,我只需要使用 Write。以上效果很好。我现在只需要弄清楚如何阻止它。