3

Yesod で Web サイトのチャット機能を構築しようとしています。そこに接続しているすべてのユーザーのリストが必要です。そのための最善の方法は、その人を接続のユーザー リストに追加し、離れたら削除することだと思います。コネクションを開いたままにしておくとレスポンスがブロックされるはずなので、素朴に書いてみました

getReceiveR :: Handler ()
getReceiveR = do
  App chan <- getYesod
  req <- waiRequest
  res <- lift $ eventSourceAppChan chan req
  sendWaiResponse res
  liftIO $ putStrLn "client disconnected" <-- Note this

しかし、sendWaiResponse が短絡しているため、もちろん機能しませんでした。

クライアントがいつ切断されたかを検出する方法はありますか?

編集:このチュートリアルの非常にわずかに変更されたバージョンを使用して、概念をテストしています。

4

1 に答える 1