Haskell Yesod WebSocketsT处理程序清理

Haskell Yesod WebSocketsT处理程序清理,haskell,websocket,yesod,Haskell,Websocket,Yesod,我目前正在Haskell中编写一个应用程序,它依赖于YesSOD及其web套接字实现 我想知道为WebSocketT处理程序获取和发布资源的正确方法是什么 例如,在下面这个简单的例子中 chatApp :: WebSocketsT Handler () chatApp = do let outgoingFlow = forever $ deliverOutgoingMessages let incomingFlow = forever $ deliverIncomingMessa

我目前正在Haskell中编写一个应用程序,它依赖于YesSOD及其web套接字实现

我想知道为WebSocketT处理程序获取和发布资源的正确方法是什么

例如,在下面这个简单的例子中

chatApp :: WebSocketsT Handler ()
chatApp = do
    let outgoingFlow = forever $ deliverOutgoingMessages
    let incomingFlow = forever $ deliverIncomingMessages
    bracket_ acquireResource
             releaseResource
             (race_ outgoingFlow incomingFlow)

<当客户端突然或故意断开连接时,似乎不会调用code>releaseResource。

这就是我周末所做的。这本质上是对web套接字后台ping过程工作方式的复制,除了当另一端不再可访问时,我不会接受ping发送异常,而是使用它来检测断开连接

echoApp':WebSocketsT处理程序()
echoApp'=do
康涅狄格州