在Yesod长期投票

Adr*_*May 7 haskell long-polling happstack yesod haskell-snap-framework

我可以在Yesod或任何其他具有可比数据库功能的Haskell Web框架中进行长时间轮询吗?

确切地说,我想延迟HTTP响应,直到发生一些有趣的事情.还应该有一个超时,在此之后客户端将被提供响应,说"没有发生",然后客户端将发出相同的请求.

为了让生活更加复杂,我想到的应用程序是通过HTTP/HTML5和MIDP客户端的一个非常紧凑的UDP协议提供所有的东西.来自任一协议的事件都可以在任一协议中释放响应

TIA,阿德里安.

Mic*_*man 7

我无法回答更复杂的UDP内容的所有问题,但简短的回答是,是的,Yesod支持长轮询.你基本上可以这样做:

myHandler = do
    mres <- timeout timeoutInMicroseconds someAction
    case mres of
        Nothing -> return nothingHappenedResponse
        Just res -> doSomething res
Run Code Online (Sandbox Code Playgroud)

您可能希望从提升基础包中使用System.Timeout.Lifted.