gpt4 book ai didi

haskell - 使用 eventsource 时检测客户端断开连接

转载 作者:行者123 更新时间:2023-12-02 17:23:22 25 4
gpt4 key购买 nike

我正在尝试为 Yesod 中的网站构建聊天功能,我希望它有一个所有已连接用户的列表。我认为最好的方法是将人员添加到连接上的用户列表中,并在他们离开时将其删除。如果保持连接打开,响应似乎应该阻塞,所以我天真地写了

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

但是它当然不起作用,因为 sendWaiResponse 短路了。

有没有办法检测客户端何时断开连接?

编辑:我正在使用 this tutorial 的稍微修改过的版本测试这个概念。

最佳答案

我确实无法确定运行代码,但这行得通吗?

import Control.Monad.Trans.Resource

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

关于haskell - 使用 eventsource 时检测客户端断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15857944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com