我正在嘗試爲Yesod中的網站構建聊天功能,並且我希望它具有所有已連接用戶的列表。我想最好的方法是將用戶添加到連接上的用戶列表中,並在離開時將其刪除。看來,如果它保持連接打開的響應應該阻止,所以我寫了天真使用eventsource時檢測客戶端斷開連接
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來測試這個概念。
如果您曾經找到解決方案,您是否介意發佈它? – Fyrn 2018-01-08 05:15:42