8

Yesod や同等のデータベース機能を備えた他の Haskell Web フレームワークでロング ポーリングを行うことはできますか?

正確には、何か面白いことが起こるまで HTTP 応答を遅らせたいのです。また、クライアントに「何も起こらなかった」という応答が提供され、クライアントが同じ要求を発行するまでのタイムアウトも必要です。

生活をさらに複雑にするために、私が考えているアプリは、HTTP/HTML5 と非常にコンパクトな UDP プロトコルの両方を介してすべてのものを MIDP クライアントに提供しています。いずれかのプロトコルからのイベントは、いずれかのプロトコルで応答をリリースできます。

TIA、エイドリアン。

4

2 に答える 2

7

より複雑な UDP に関するすべての問題に答えることはできませんが、簡単に言えば、はい、Yesod はロング ポーリングをサポートしているということです。基本的に次のようなことができます:

myHandler = do
    mres <- timeout timeoutInMicroseconds someAction
    case mres of
        Nothing -> return nothingHappenedResponse
        Just res -> doSomething res

おそらく、lifted-base パッケージの System.Timeout.Lifted を使用することをお勧めします。

于 2013-06-10T14:37:52.513 に答える