- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当 HTTP 客户端断开连接(或其他真实世界发生)时,无法弄清楚如何进行清理。我试图包装我的 Source
成addCleanup
,但它没有被调用。
这是我的无限源流字节串的最小示例:
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Network.Wai
import Network.HTTP.Types
import Network.Wai.Handler.Warp (run)
import Data.ByteString.Lazy.Char8 ()
import Control.Monad
import Control.Monad.Trans
import Control.Concurrent (threadDelay)
import Data.Conduit
import Blaze.ByteString.Builder (Builder)
import qualified Blaze.ByteString.Builder.ByteString as BBBB
import qualified Data.ByteString.Char8 as BS
stream :: Source (ResourceT IO) (Flush Builder)
stream = addCleanup (\_ -> liftIO $ putStrLn "cleanup.") $ do
liftIO $ putStrLn "source started."
yield Flush
forever $ do
yield $ bchunk "whatever"
yield Flush
liftIO $ threadDelay 10000
app :: Application
app req = do
liftIO $ putStrLn "in the handler."
return $ ResponseSource status200 [("Content-Type", "text/plain")] stream
main :: IO ()
main = run 3000 app
bchunk = Chunk . BBBB.fromByteString . BS.pack
stream
开始清除数据。但是,在我关闭连接后,没有“清理”。消息出现并且没有执行任何操作,从而在实际代码中泄漏资源。
最佳答案
我认为清理的首选方法是使用 allocate
或 register
在 Control.Monad.Trans.Resource.MonadResource
上定义的函数.这将在您的 ResponseSource
时调用您的处理程序。终止,异常(exception)与否。
从看addCleanup
代码,它仅用于常规(非异常)完成。
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Network.Wai
import Network.HTTP.Types
import Network.Wai.Handler.Warp (run)
import Data.ByteString.Lazy.Char8 ()
import Control.Monad
import Control.Monad.Trans
import Control.Monad.Trans.Resource
import Control.Concurrent (threadDelay)
import Data.Conduit
import Blaze.ByteString.Builder (Builder)
import qualified Blaze.ByteString.Builder.ByteString as BBBB
import qualified Data.ByteString.Char8 as BS
stream :: MonadResource m => Source m (Flush Builder)
stream = do
-- the release key can be used for early cleanup
_releaseKey <- lift . register $ putStrLn "cleanup."
liftIO $ putStrLn "source started."
yield Flush
forever $ do
yield $ bchunk "whatever"
yield Flush
liftIO $ threadDelay 10000
app :: Application
app _ = do
liftIO $ putStrLn "in the handler."
return $ ResponseSource status200 [("Content-Type", "text/plain")] stream
main :: IO ()
main = run 3000 app
bchunk :: String -> Flush Builder
bchunk = Chunk . BBBB.fromByteString . BS.pack
关于haskell - WAI/Warp ResponseSource 清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193377/
W3C 将 WAI-ARIA 角色分为四组: 抽象角色 小部件角色 文档结构角色 标志性角色 有人可以解释一下抽象角色类别吗? 最佳答案 规范中确实提到: Abstract roles are the
W3C 将 WAI-ARIA 角色分为四组: 抽象角色 微件角色 文档结构角色 里程碑式的角色 有人可以解释抽象角色类别吗? 最佳答案 它确实在规范中说: Abstract roles are the
我使用 wai 进行了基本的“hello world”应用程序设置,并且想使用 wai-handler-devel,但我不确定如何进行,并且在 wai 项目中找不到任何使用它的示例。 {-# LANG
我正在尝试使用 wai 编写一个非常简单的“echo”网络应用程序;我想要它做的就是回复发布给它的数据(我真的不关心该方法,但我使用的是curl,而curl正在使用POST,所以这就是我想要的)。我的
所以,我想向我的仆人服务器添加两个 wai 中间件。一种用于提供静态文件的中间件,另一种用于日志记录。 我定义了 api (router),这就是我启动服务器的方式: webServer :: IO
我想为我的 web 应用程序实现一个“正常关闭”命令(与我的第一直觉相反,即要求人们终止该进程) 我的前两次尝试包括 liftIO exitSuccess E.yield (responseLBS s
我好奇地观察了 WAI 界面,虽然它看起来很简单,但我惊讶地发现它需要多少次迭代才能稳定在当前的形式! 我原以为资源安全的 CPS 风格将是最有趣的事情,但看起来还有很多东西值得学习! $ git l
我是 Haskell 的新手,我正在尝试让 wai 包工作(因为我对将 Haskell 用于 Web 应用程序很感兴趣)。我试着从 wai 中的第一个最简单的例子开始。主页: [ 1] {-# LAN
我正在标记一个网站,我一直在努力磨练我的可访问性技能。我想知道对于选项卡内容最语义化的标记是什么。这就是我现在拥有的: Stuff Stuff Stuff
我是 WAI-ARIA 的新手。我想知道我们如何根据现有角色创建自定义角色。 例如,我想从 aria 按钮角色创建一个自定义按钮角色。如果有人提供这样做的步骤,那就太好了。 最佳答案 WAI-ARIA
当 HTTP 客户端断开连接(或其他真实世界发生)时,无法弄清楚如何进行清理。我试图包装我的 Source成addCleanup ,但它没有被调用。 这是我的无限源流字节串的最小示例: {-# LAN
我想编写一个 Web 服务器,将其状态存储在带有 wai/warp 的 State monad 中。像这样的事情: {-# LANGUAGE OverloadedStrings #-} import
在我的网站上,用户可以单击“实时聊天”按钮,然后会出现一个聊天窗口。我正在寻找一些文本来读出(对于使用屏幕阅读器的辅助用户) 当聊天窗口出现时,焦点将转到输入文本框 - 用户可以在其中输入文本与顾问聊
我目前正在使用wai-middleware-static为我的服务器提供自定义页面。但是,我看到我的服务器在每个页面加载时都会收到对 favicon.ico 等的请求,以及我的每一种网络字体,因此我决
我目前正在遵循本教程以获得文件选择器功能。 http://www.alecjacobson.com/weblog/?p=1645 我想为“选择文件”部分添加 wai-aria 属性以使其可读。我尝试过
我一直在做一些关于网络可访问性的研究,我读到 jquery 不像 dojo 或 YUI 那样对 WAI ARIA 有很好的支持。这是真的吗? 我仍在研究网络可访问性,所以如果有人可以推荐任何好的文章或
我正在努力满足一个元素的 WAI-Aria 合规性标准,以下代码生成一个自定义下拉按钮。我收到的错误如下所示“按钮为空或没有值文本。”我尝试过使用 aria 标签,包括隐藏文本、附加标题以及向按钮
我正在创建一个链接到各种不同文章的导航列表。在过去,我将导航列表定义为包含单个 ul 元素的 nav 元素,该元素包含多个 li 元素,所有元素都有自己的 a 元素。 我想知道,是否可以使用 WAI-
本着渐进增强的精神,我想做一些 ARIA 功能测试,以实现额外的增强功能(如果浏览器支持的话)。我不打算检测屏幕阅读器——我希望确保屏幕阅读器用户在给定他们正在使用的工具的情况下获得最佳体验。 例如,
我有一个页面,我正在尝试编写代码,用户必须从多个选项中选择一个,以缩略图网格的形式呈现。在类似的页面上,我使用了 role="radiogroup" 和 role="radio"(以及适当的脚本、标签
我是一名优秀的程序员,十分优秀!