Created
March 14, 2018 14:07
-
-
Save FruitieX/f9d54caf5a7e7305c169bb0a938b6cbc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
handleMessage | |
:: forall e | |
. SockJS.Connection | |
-> Message | |
-> Eff (console :: CONSOLE | e) Unit | |
handleMessage conn (CurrentQueue message) = do | |
-- how to modify state here? | |
log $ "queue message: " <> unsafeStringify message | |
handleMessage conn (PlayPause message) = do | |
log $ "play/pause message: " <> unsafeStringify message | |
handleMessage conn (Skip message) = do | |
log $ "skip message: " <> unsafeStringify message | |
handleMessage conn (Seek message) = do | |
log $ "seek message: " <> unsafeStringify message | |
decodeMessage | |
:: forall e | |
. SockJS.Connection | |
-> SockJS.Message | |
-> Eff (console :: CONSOLE | e) Unit | |
decodeMessage conn message = do | |
let (decoded :: Maybe Message) = hush $ readJSON message | |
_ <- traverse (handleMessage conn) decoded | |
pure unit | |
runApp | |
:: forall e | |
. SockJS.Server | |
-> StateT AppState (Eff (console :: CONSOLE | e)) Unit | |
runApp sockjs = do | |
liftEff $ SockJS.onConnection sockjs \conn -> do | |
log "client connected" | |
SockJS.onData conn $ decodeMessage conn | |
SockJS.onClose conn $ log "client disconnected" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment