diff options
Diffstat (limited to 'WebSockets.hs')
-rw-r--r-- | WebSockets.hs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/WebSockets.hs b/WebSockets.hs index 7a53c8c..8aec057 100644 --- a/WebSockets.hs +++ b/WebSockets.hs @@ -164,16 +164,16 @@ clientApp -> (AnyMessage -> Maybe received) -> (TMChan sent -> TMChan (MissingHashes received) -> SessionID -> IO a) -> ClientApp a -clientApp mode mksent filterreceived a conn = do +clientApp mode mksent filterreceived a conn = -- Ping every 30 seconds to avoid timeouts caused by proxies etc. - forkPingThread conn 30 - _v <- negotiateWireVersion conn - sendBinaryData conn (SelectMode ClientSends mode) - r <- receiveData conn - case r of - Ready ServerSends sid -> bracket setup cleanup (go sid) - WireProtocolError e -> error e - _ -> protocolError conn "Did not get expected Ready message from server" + withPingThread conn 30 (return ()) $ do + _v <- negotiateWireVersion conn + sendBinaryData conn (SelectMode ClientSends mode) + r <- receiveData conn + case r of + Ready ServerSends sid -> bracket setup cleanup (go sid) + WireProtocolError e -> error e + _ -> protocolError conn "Did not get expected Ready message from server" where setup = do schan <- newTMChanIO |