Yesod의 웹 사이트에 대한 채팅 기능을 구축하려고하는데 거기에있는 모든 연결된 사용자의 목록을 원합니다. 그 일을하는 가장 좋은 방법은 연결에서 사용자 목록에 사람을 추가하고 떠나면 제거하는 것입니다. 때문에 sendWaiResponse 단락, 연결 개방 유지하는 경우 응답이 차단해야한다는 것, 그래서 나는 순진하게도 이벤트 소스를 사용할 때 클라이언트 연결을 감지하십시오.
getReceiveR :: Handler()
getReceiveR = do
App chan <- getYesod
req <- waiRequest
res <- lift $ eventSourceAppChan chan req
sendWaiResponse res
liftIO $ putStrLn "client disconnected" <-- Note this
을 썼다 그러나 그것은 물론 작동하지 않았다.
클라이언트가 연결을 끊을 때 어떤 방법으로 감지 할 수 있습니까?
편집 : 개념을 테스트하기 위해 매우 슬림하게 수정 된 this tutorial 버전을 사용하고 있습니다.
해결책을 찾은 경우 게시 하시겠습니까? – Fyrn