diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-07-25 09:28:44 +0200 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-07-25 09:28:44 +0200 |
| commit | 3cf68ac0db0e5f839d3f1dd8f345e44584ed13f7 (patch) | |
| tree | 0dd9c42584eb0a95c0a92b7697a223bd51ba942f /src | |
| parent | 7811d5658c75344dd1787cd821c5c28e2a3dab32 (diff) | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/Attach.hs | 8 | ||||
| -rw-r--r-- | src/Main.hs | 8 | ||||
| -rw-r--r-- | src/WebSocket.hs | 13 |
3 files changed, 16 insertions, 13 deletions
diff --git a/src/Attach.hs b/src/Attach.hs index c15b0a5..cf6bd1c 100644 --- a/src/Attach.hs +++ b/src/Attach.hs @@ -30,7 +30,7 @@ import Text.Blaze.Html5 qualified as H import Text.Blaze.Html5.Attributes qualified as A import JavaScript -import WebSocket (startClient, receiveMessage) +import WebSocket (startDefaultWebSocketConnections) data AttachState = AttachState @@ -120,11 +120,7 @@ initiateAttachConnection baseHead dgst = do Nothing -> return () locationAssign "./" - startClient asServer "a.discovery.erebosprotocol.net" 443 "" $ \conn -> do - void $ forkIO $ forever $ do - msg <- receiveMessage conn - receivedFromCustomAddress asServer conn msg - void $ serverPeerCustom asServer conn + startDefaultWebSocketConnections asServer runExceptT (discoverySearch asServer dgst) >>= \case Right _ -> return () diff --git a/src/Main.hs b/src/Main.hs index c8a2e82..547aaca 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -45,7 +45,7 @@ import JavaScript as JS import Storage.Cache import Storage.IndexedDB import Version -import WebSocket (startClient, receiveMessage) +import WebSocket (startDefaultWebSocketConnections) main :: IO () main = error "unused" @@ -288,11 +288,7 @@ setup = do maybe (return ()) (watchPeers gs server) =<< JS.getElementById "peer_list" - startClient server "a.discovery.erebosprotocol.net" 443 "" $ \conn -> do - void $ forkIO $ forever $ do - msg <- receiveMessage conn - receivedFromCustomAddress server conn msg - void $ serverPeerCustom server conn + startDefaultWebSocketConnections server Just inviteGenerateInput <- JS.getElementById "invite_name" Just inviteGenerateForm <- JS.getElementById "invite_generate" diff --git a/src/WebSocket.hs b/src/WebSocket.hs index 0492c81..4179cfa 100644 --- a/src/WebSocket.hs +++ b/src/WebSocket.hs @@ -1,11 +1,13 @@ module WebSocket ( Connection, startClient, + startDefaultWebSocketConnections, sendMessage, receiveMessage, ) where -import Control.Concurrent.Chan +import Control.Concurrent +import Control.Monad import Data.ByteString (ByteString) import Data.ByteString.Unsafe @@ -70,6 +72,15 @@ startClient server addr port path fun = do dropPeerAddress server $ CustomPeerAddress conn +startDefaultWebSocketConnections :: Server -> IO () +startDefaultWebSocketConnections server = do + startClient server "a.discovery.erebosprotocol.net" 443 "" $ \conn -> do + void $ forkIO $ forever $ do + msg <- receiveMessage conn + receivedFromCustomAddress server conn msg + void $ serverPeerCustom server conn + + sendMessage :: Connection -> ByteString -> IO () sendMessage Connection {..} bs = do unsafeUseAsCStringLen bs $ \( ptr, len ) -> do |